postfix+dovecot+maildrop+mailscanner+clamav+spamassassin搭建rhel6平臺郵件服務器

postfix+dovecot+maildrop+mailscanner+clamav+spamassassin搭建rhel6平臺郵件服務器

 

系統:rhel6,安裝base,developments tools。後一項選擇的所有可選包。 

web平臺:lamp

web用戶界面及後臺管理: extmail extman。以前一直用這個,頁面美觀,易操作。易管理。

SMTP服務器:postfix2.8

pop3服務器:dovecot2.0

MDA服務器:maildrop2.5

驗證服務器:dovecot做smtp驗證,courier-authlib做pop3驗證。開始想用dovecot做投遞認證。後來由於水平實在有限,網上資料也很少,終究放棄了。而且好像extman那塊也還沒有做到支持dovecot。

殺毒+反垃圾:mailscanner+clamav+spamassassin,之所以用這個組合一個是maillscanner功能很強大。再有就是看着官網比較順眼。最大的好處是提供了那些繁瑣的perl依賴包的下載,簡直就是一鍵式安裝。非常方便噢。

主要軟件都是最新的版本。看起來會比那些老文檔爽吧,而且網上對dovecot+maildrop的組合用的好像不是很多,我個人覺得這個組合效率應該不比courier套件的組合低。我用maildrop主要也是爲實現自動回覆的功能。

======================================================================

安裝配置前準備:

1.改主機名(非必要,但別是除localhost之外的其他主機名了,修改主機名也是爲了避免出現不必要的錯誤)

#hostname mail.test.com

#vi /etc/sysconfig/network

修改 HOSTNAME=mail.test.com

註銷再登陸,驗證一下:

#hostname

#uname -n

顯示一致,說明已經可以進行下一步了。

==================================================================

2.DNS設置

如果方便可以直接在你的域名管理後臺添加mail的A記錄及MX記錄。如果暫時是測試環境那就自己建一個dns服務吧,其實也很簡單。

從www.isc.org下載bind9.8,這是當前的最新版了。

#tar zxvf bind-9.8.0.tar.gz
#cd bind-9.8.0
#./configure --prefix=/usr/local/bind --enable-threads
#make;make install
#/usr/local/bind/sbin/rndc-confgen > /usr/local/bind/etc/rndc.conf
#tail -10/usr/local/bind/etc/rndc.conf |head -9| sed s/#\// > /usr/local#/bind/etc/named.conf

#dig > /usr/local/bind/etc/named.root

#vim /usr/local/bind/etc/named.conf

下是我的named.conf文件:

 key "rndc-key" {
        algorithm hmac-md5;
        secret "phTa1qrl4gZ5Th3vrV+nzQ==";
 };

 controls {
        inet 127.0.0.1 port 953
                allow { 127.0.0.1; } keys { "rndc-key"; };
 };
options {
        directory "/usr/local/bind";
        pid-file "var/named.pid";
        forwarders {
                202.106.0.20;
        };
};
zone "." IN {
        type hint;
        file "etc/named.root";
};
zone "localhost" IN {
        type master;
        file "etc/named.local";
};
zone "0.0.127.in-addr.arpa" IN {
        type master;
        file "etc/named.localarpa";
};
zone "test.com" IN {
        type master;
        file "etc/named.test";
};
zone "0.168.192.in-addr.arpa" IN {
        type master;
        file "etc/named.testarpa";
};

接下來建立這個主文件中指定的zone配置文件

(1)named.local

$TTL 86400
@   1D    IN      SOA     @        root.localhost. (
                                        20110429
                                        3H
                                        15M
                                        1W
                                        1D )
    1D    IN      NS      @
    1D    IN      A      127.0.0.1

(2)named.localarpa

$TTL 86400
@       IN      SOA     localhost.      root.localhost. (
                                        20110429
                                        3H
                                        15M
                                        1W
                                        1D )
        IN      NS      localhost.
1       IN      PTR     localhost.

(3)named.test

$TTL 86400
@       IN      SOA     test.com.       root.test.com.(
                                        20110429
                                        3H
                                        15M
                                        1W
                                        1D )
        IN      NS      @
        IN      MX  1   mail.test.com.
ns      IN      A       192.168.50.170
@       IN      A       192.168.50.170
mail    IN      A       192.168.50.170

(4)named.testarpa

$TTL 86400
@ IN SOA test.com. root.test.com. (
                        20110429 ; Serial
                        3H ; Refresh 1d=1 days
                        15M ; Retry 30m=30 minutes
                        1W ; Expire 1w=7 days
                        1D ) ; Minimum ;Negative Caching
@       IN NS test.com.
        IN PTR test.com.
        IN PTR mail.test.com.
        IN PTR ns.test.com.


#/usr/local/bind/sbin/named

 

注:(1)/usr/local/bind/sbin/rndc-confgen 這條命令的意思就不解釋了,只是在執行這個命令時有時候會卡住,這是因爲/dev/random的原因。編輯這個文件,在裏面輸入隨意的數字字母,多輸點,保存退出,這個命令就執行成功了,以前在centos上沒遇見這個問題。這裏注意一下嘍。

(2)named.conf中options這一行以上的內容就是由(1)產生的,這裏不能自建。一定要用rndc-confgen這個命令生成。

好了以上我只是建了一個測試環境。不需要太複雜

啓動之後用nslookup,ping檢查一下看是否能正常解析,如果有錯誤會在/var/log/messages中可以看到。

=======================================================================

3.amp安裝配置

我自己測試時用的系統自帶的安裝包。不過我這裏還想再操作一遍。yum這個東西很不賴,安裝軟件時可以解決rpm包的依賴性,這是我爲什麼討厭使用rpm包的原因,有時候讓人抓狂。不過一些簡單的包用rpm還是蠻有效率的。

由於我的系統安裝時比較乾淨,所以一些包默認沒有安裝。比如安裝PHP環境需要的一些支持圖像的軟件我的系統只裝了主程序,但相應的devel包卻沒裝。這時候用光盤鏡像製作的yum源搬上來吧。

yum install libpng

yum install libpng-devel

yum install libjpeg

yum install libjpeg-devel

yum install freetype

yum install freetype-devel

yum install zlib

yum install zlib-devel

yum install libxml2

yum install libxml2-devel

yum install gd  #以上的包也是爲這個gd服務的,所以要先裝好

(1)apache

#tar jxvf httpd-2.2.15.tar.bz2

#cd httpd-2.2.15
#./configure --prefix=/usr/local/apache --enable-so --enable-rewrite && make && make install

(2)mysql

groupadd mysql
useradd -g mysql -M -s /bin/false mysql
tar zxvf mysql-5.1.53-linux-i686-glibc23.tar.gz
cp -a mysql-5.1.53-linux-i686-glibc23 /usr/local/mysql
cd /usr/local/mysql
chown -R mysql:mysql .

scripts/mysql_install_db --user=mysql
cp /usr/local/mysql/support-files/my-large.cnf /etc/my.cnf
chown -R root .
chown -R mysql data
bin/mysqld_safe --user=mysql &
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 35 mysqld on
echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf
ldconfig
echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
. /etc/profile

我爲了追求安裝時的速度,這裏是用的二進制包,不過用於郵件存儲來說應該夠用了。如果時間很充裕還是用源碼包configure,make,make install吧。

(3)php

tar zxvf php-5.3.6.tar.gz &&
cd php-5.3.6 

./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --enable-mbstring --with-gd --with-jpeg-dir --with-freetype --with-zlib-dir --with-xml --with-mysql=/usr/local/mysql --with-mysql-libs=/usr/local/mysql/lib --with-mysql-includes=/usr/local/mysql/include --enable-sockets
make && make install && cp php.ini-production /usr/local/php/lib/php/php.ini

修改/usr/local/apache/conf/httpd.conf

加入 AddType application/x-httpd-php .php

修改 DirectoryIndex加入index.php

這樣就是apache支持了php解析。

在/usr/local/apache/htdocs/下建立一個test.php文件:

<?php

phpinfo()

?>

在瀏覽器裏查看此文件是否被解釋執行。

echo "/usr/local/apache/bin/apachectl start" >> /etc/rc.local

=========================================================================

4.安裝courier-authlib,maildrop

安裝前先建立想要建立相關的用戶信息

groupadd postdrop
groupadd -g 1000 postfix
useradd -u 1000 -g postfix -s /sbin/nologin -G postdrop postfix
groupadd dovecot
useradd -s /sbin/nologin -g dovecot dovecot
groupadd -g 1010 vmail
useradd -u 1010 -g vmail -d /mailbox -s /sbin/nologin vmail

建立存放虛擬域,用戶及郵件的目錄

mkdir /mailbox

chown -R vmail.vmail /mailbox

建立所需的數據庫

tar zxvf extman-1.1.tar.gz

cd extman-1.1/docs

mysql -uroot -p < extmail.sql

mysql -uroot -p < init.sql

 

 

 tar jxvf courier-authlib-0.63.0
 cd courier-authlib-0.63.0

 ./configure --with-redhat --with-authmysql=yes --with-mailuser=vmail --with-mailgroup=vmail --with-mysql-libs=/usr/local/mysql/lib --with-mysql-includes=/usr/local/mysql/include --prefix=/usr/local/authlib --without-stdheaderdir

make;make install

cd /usr/local/authlib/etc/authlib/

mv authdaemonrc.dist authdaemonrc
mv authmysqlrc.dist authmysqlrc

編輯authdaemonrc,確保爲以下內容:

authmodulelist="authmysql"
authmodulelistorig="authmysql"
daemons=10
authdaemonvar=/usr/local/authlib/var/spool/authdaemon
DEBUG_LOGIN=0
DEFAULTOPTIONS=""
LOGGEROPTS=""

其中前三行是需要自行修改的

編輯authmysqlrc確保爲以下內容:

MYSQL_SERVER            localhost
MYSQL_USERNAME          extmail
MYSQL_PASSWORD          extmail
MYSQL_SOCKET            /var/lib/mysql/mysql.sock
MYSQL_PORT              3306
MYSQL_OPT               0
MYSQL_DATABASE          extmail
MYSQL_USER_TABLE        mailbox
MYSQL_CRYPT_PWFIELD     password
DEFAULT_DOMAIN          test.com
MYSQL_UID_FIELD         uidnumber
MYSQL_GID_FIELD         gidnumber
MYSQL_LOGIN_FIELD       username
MYSQL_HOME_FIELD        homedir
MYSQL_NAME_FIELD        name
MYSQL_MAILDIR_FIELD     maildir
MYSQL_QUOTA_FIELD       quota
MYSQL_SELECT_CLAUSE SELECT username,password,"",uidnumber,gidnumber,
             CONCAT("/mailbox/",homedir),CONCAT("/mailbox/",maildir),\
                        quota,name from mailbox\
                        where username="$(local_part)@$(domain)";

 

注:MYSQL_SELECT_CLAUSE......應用這個查詢語句的目的是爲了取得maildrop的自動回覆功能,我在網上看到的還有一種配置,設置:

MYSQL_UID_FIELD爲vmail的uid

MYSQL_GID_FIELD爲vmail的gid

MYSQL_HOME_FIELD爲("/mailbox/",maildir)

MYSQL_MAILDIR_FIELD爲("/mailbox/",maildir)

然後最下面那個查詢語句省略。但這種配置我試過在extmail裏設置好自動回覆,不能實現其功能。

設置authlib的共享庫:

echo "/usr/local/authlib/lib/courier-authlib" >> /etc/ld.so.conf
ldconfig

拷貝安裝包內的courier-authlib.sysvinit到/etc/init.d下:

cp courier-authlib.sysvinit /etc/init.d/courier-authlib

chmod 755 /etc/init.d/courier-authlib
chkconfig --add courier-authlib
chkconfig --level 2345 courier-authlib on
service courier-authlib start

chmod +x /usr/local/authlib/var/spool/authdaemon

ln -sv /usr/local/authlib/bin/courierauthconfig /usr/bin

ln -sv /usr/local/authlib/include/* /usr/include

注:上面兩個連接文件在安裝maildrop時,會去相應目錄檢查這些文件。

tar jxvf maildrop-2.5.2.tar.bz2
cd maildrop-2.5.2

./configure --enable-sendmail=/usr/sbin/sendmail --enable-trusted-users='root vmail' --enable-syslog=1 --enable-maildirquota --enable-maildrop-uid=1010 --enable-maildrop-gid=1010 --with-trashquota --with-dirsync

make;make install 

安裝完成以後用命令maildrop -v檢查一下是否支持courier認證,顯示以下信息,表明正確安裝。如果沒有第二行,很可能是courier安裝時沒有指定vmail用戶,或者courierauthconfig沒有連接正確,我就有過這麼一次,重新編譯了好幾遍maildrop都是沒有courier認證支持。我都快抓狂了,最後去檢查那個courierauthconfig連接文件,結果發現時紅色的。正常情況下應該是淺綠色的。

maildrop 2.5.2 Copyright 1998-2005 Double Precision, Inc.
Courier Authentication Library extension enabled.
Maildir quota extension are now always enabled.
This program is distributed under the terms of the GNU General Public
License. See COPYING for additional information.
 

編輯maildrop日誌文件 

vi /etc/maildroprc 輸入如下內容:

logfile "/var/log/maildrop.log"

touch /var/log/maildrop.log

chown -R vmal.vmail /var/log/maildrop.log

這個文件要自行建立,而且權限要正確,否則在測試時會出現“不能建立這個文件”。網上有人說把日誌的設置去掉,比較不可取。另外此文件還可以設置垃圾郵件分揀。我在這裏沒有設置。再做深入研究時再加吧。

=========================================================================

5.postfix+dovecot

(1)安裝

安裝之前首先卸載sendmail,這一步記得還算熟了,不過rhel6上的sendmail已經被postfix取代,postconf -m 發現默認竟然支持mysql了。一大驚喜,以後可以不用費勁編譯安裝了。呵呵,別失望,我已經下載好了2.8的版本,爲了體驗一下,我還是卸載了原裝正版的postfix。還是以源碼包安裝爲老規矩吧。

這次安裝打破以前的慣例,首先聲明這不是我的原創,也是網上翻出來的。編譯postfix時把sasl驗證改爲dovecot。並且使用自動安裝方式,省去交互式安裝需要手動按回車的麻煩,我這裏是安照默認安裝的路徑。

rpm -e postfix --nodeps #卸載自帶的postfix

postfix還依賴一些包

yum install openssl

yum install openssl-devel

yum install db*

還有記得上面mysql的庫文件要加到ld.so.conf中,並使之生效。

#!/bin/bash
postfixver=postfix-2.8.2

dovecotver=dovecot-2.0.11
###################setup_postfix#################
tar zxvf $postfixver.tar.gz
cd $postfixver
chmod 755 ./postfix-install
make makefiles \
CCARGS='-DHAS_MYSQL -I/usr/include/mysql -DUSE_SASL_AUTH \
-DDEF_SERVER_SASL_TYPE=\"dovecot\" -DUSE_TLS -I/usr/include' \
AUXLIBS='-L/usr/lib/mysql -lmysqlclient -lz -lm -L/usr/lib -lssl -lcrypto' &&
make &&
./postfix-install -non-interactive \
install_root=/ tempdir=/tmp \
config_directory=/etc/postfix \
command_directory=/usr/sbin \
daemon_directory=/usr/libexec/postfix \
data_directory=/var/lib/postfix \
html_directory=no \
mail_owner=postfix \
mailq_path=/usr/bin/mailq \
manpage_directory=/usr/local/man \
newaliases_path=/usr/bin/newaliases \
queue_directory=/var/spool/postfix \
readme_directory=no \
sendmail_path=/usr/sbin/sendmail \
setgid_group=postdrop

############setup_dovecot############

tar zxvf $dovecotver.tar.gz
cd $dovecotver
./configure --prefix=/usr/local/dovecot \
--sysconfdir=/etc --localstatedir=/var --with-sql --with-mysql --with-openssl &&
make &&
make install

紅色字體是腳本內容,這裏就是簡單命令的羅列,所以就不一步一步操作了。

(2)配置

postconf -n > /etc/postfix/main.cf.new   #把默認的main.cf中的有效配置提取出來.

mv /etc/postfix/main.cf /etc/postfix/main.cf.bak 

mv /etc/postfix/main.cf.new /etc/postfix/main.cf

下面是我的main.cf配置:

sed -e /^#/d /etc/postfix/main.cf

queue_directory = /var/spool/postfix

command_directory = /usr/sbin

daemon_directory = /usr/libexec/postfix

data_directory = /var/lib/postfix

mail_owner = postfix

sendmail_path = /usr/sbin/sendmail

newaliases_path = /usr/bin/newaliases

mailq_path = /usr/bin/mailq

setgid_group = postdrop

html_directory = no

manpage_directory = /usr/local/man

sample_directory = /etc/postfix

unknown_local_recipient_reject_code = 550

readme_directory = no
header_checks = regexp:/etc/postfix/header_checks  #這個配置是調用MailScanner用的,可以不加。
mydomain = test.com
myhostname = mail.test.com
myorigin = $mydomain
inet_interfaces = all
mydestination =  
mynetworks_style = subnet
mynetworks = 127.0.0.0/8
home_mailbox = Maildir/                 #郵箱格式爲Maildir        
alias_database = hash:/etc/postfix/aliases
alias_maps = hash:/etc/postfix/aliases
virtual_mailbox_base = /mailbox           #我的郵箱目錄
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf 

#mysql_virtual_mailbox_maps.cf這個文件可以從extman解壓包中的doc目錄中取得

#下面的三個mysql_virtual.....文件也同樣從extman的doc中取得,拷貝到相應目錄即可
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_uid_maps = static:1010         #vmail的ID
virtual_gid_maps = static:1010
virtual_transport = maildrop:          #使用maildrop做本地的投遞
maildrop_destination_recipient_limit = 1  
maildrop_destination_concurrency_limit=1
message_size_limit = 209715200          #郵件大小的限制,網上有的說是限制附件這不準確
virtual_mailbox_limit = 209715200
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_mailbox_limit_message = sorry,the user'smaildir has overdrawn his diskspace quota,please try again later.
virtual_overquota_bounce = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $mydomain
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot               #這一行聲明使用dovecot做SMTP驗證,和下一行一起作用
smtpd_sasl_path = private/auth
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,permit_auth_destination,

 reject_invalid_hostname,reject_non_fqdn_hostname,

 reject_unknown_sender_domain,reject_non_fqdn_sender,

 reject_non_fqdn_recipient,reject_unknown_recipient_domain,

 reject_unauth_pipeling,reject_unauth_destination,reject

注:postfix的配置文件如果一行內寫的太長想換行的話,要在下一行加空格,這樣postfix就知道是上一行的續寫。

要postfix支持maildrop還需要在master.cf中把調用maildrop的註釋打開,並加上適當的修改。

maildrop  unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail argv=/usr/local/bin/maildrop -w 90 -d ${user}@${nexthop} ${recipient} ${user} ${extension} {nexthop}

編輯dovecot配置文件

cp /usr/local/dovecot/share/doc/dovecot/example-config/dovecot.conf /etc/dovecot/
cp /usr/local/dovecot/share/doc/dovecot/example-config/dovecot-sql.conf.ext /etc/dovecot/dovecot-mysql.conf

兩個關鍵的配置樣例文件在安裝目錄的share/doc下,拷貝到指定的存放配置文件的目錄(根據安裝時的選項)。

#sed -e /^#/d /etc/dovecot/dovecot.conf
protocols = imap pop3
listen = *
base_dir = /usr/local/dovecot/
auth_debug = yes
auth_default_realm = test.com
default_login_user = dovecot
default_internal_user = dovecot
disable_plaintext_auth = no
ssl = no
mail_uid = 1010
mail_gid = 1010
first_valid_uid = 1010
last_valid_uid = 1010
log_path = /var/log/dovecot.log
mail_location = maildir:/mailbox/%d/%n/Maildir
pop3_uidl_format = %08Xu%08Xv
auth default {
        mechanisms  = plain login
        passdb sql {
                args = /etc/dovecot/dovecot-mysql.conf
        }
        userdb sql {
                args = /etc/dovecot/dovecot-mysql.conf
        }
        socket listen {
                client {
                        path = /var/spool/postfix/private/auth
                        mode = 0660
                        user = postfix
                        group = postfix
                }
        }
}

#sed -e /^#/d /etc/dovecot/dovecot-mysql.conf
driver = mysql
connect = host=localhost dbname=extmail user=extmail password=extmail
default_pass_scheme = MD5-CRYPT      #這裏和extmail的驗證方式一致
password_query = \
  SELECT password ,maildir as userdb_home\
  FROM mailbox WHERE username = '%u'
user_query = \
  SELECT 1010 as uid, 1010 as gid \
  FROM mailbox WHERE username = '%u' AND active='1'

加入自啓動程序

echo "postfix start" >> /etc/rc.local

echo "/usr/local/dovecot/sbin/dovecot -c /etc/dovecot/dovecot.conf" >> /etc/rc.local

==================================================================

6.反病毒+反垃圾

從mailscanner官網下載MailScanner,還有一個驚喜,不僅MailScanner的包自帶安裝時依賴的perl程序,還有ClamAV 0.96.5 and SpamAssassin 3.3.1 easy installation package.這麼一個包。下載下來打開後也和MailScanner一樣封裝好了clamav和spam,同時也有相應的perl程序包。這可是省了很多的時間呢。

先安裝MailScanner。解壓運行目錄下的install.sh就可以了。安裝順利完成。

安裝install-Clam-SA-latest.tar.gz。這個包安裝過程中有些小問題。一些依賴的perl程序在它自己的解壓包內還是沒有的,導致安裝到spam時報錯。有一個必須安裝的NetAddr-IP包沒裝上,還有三個可選包,還提示安裝razor和dcc。這個只能麻煩一下了,先手動安裝這幾個包吧。這裏我以前已經下載了相關的包,所以可選的也給它裝上。

IO-Socket-SSL-1.39

Mail-SPF-2.004

NetAddr-IP-4.004

razor-agents-2.84

razor-agents-sdk-2.07

dcc-1.3.139

就是這幾個包了,注意版本別太低,不然不被識別。前3個是perl包,安裝時執行

"perl Makefile.PL;make;make install";後面是一般的壓縮包,三部曲"configure;make;make install".

這樣再運行install.sh就順利裝好了。

這裏先做一些簡單的配置就可以運行起來了。mailscanner的配置文件很人性化,每個設置都有大量的說明。可設置的選項很多,主配置文件有3100多行,這裏先讓其運行起來。

編輯/etc/MailScanner/MailScanner.conf主配置文件,修改一下選項:

%org-name% = test.com
%org-long-name% = ceshi    #填寫組織名,可隨意填寫
%web-site% = mail.test.com   #填寫組織的網站

Run As User = postfix
Run As Group = postfix

Incoming Queue Dir = /var/spool/postfix/hold
Outgoing Queue Dir = /var/spool/postfix/incoming
MTA = postfix

SpamAssassin User State Dir = /var/spool/MailScanner/spamassassin

Virus Scanners = clamav

Use SpamAssassin = yes

更細緻的配置以後根據實際情況再做調整。

mkdir /var/spool/MailScanner/spamassassin
chown -R postfix.postfix /var/spool/MailScanner/incoming
chown -R postfix.postfix /var/spool/MailScanner/quarantine
chown -R postfix.postfix /var/spool/MailScanner/spamassassin

基本配置好了,clamav和spam據說可以直接被mailscanner管理。甚至是postfix。

這裏爲使postfix調用mailscanner,要編輯main.cf文件。上面安裝postfix時給出的配置文件已經添加了,下面要編輯/etc/postfix/header_checks,確保爲以下內容:

/^Received:/ HOLD

這個配置可以從官網文檔上查到,也可以在網絡上找到。再提一下,mailscanner的官網看起來還是比較順眼的,多看一下。

既然mailscanner能管理postfix,那就把前面寫進開機啓動的postfix start去掉。

然後關閉postfix

postfix stop

chkconfig --add MailScanner

chkconfig --level 235 MailScanner on

service MailScanner start

ps aux |grep postfix

經查看postfix確實已經啓動。

tail -f /var/log/maillog 發送一封郵件測試一下

MailScanner[18478]: New Batch: Scanning 1 messages, 879 bytes

MailScanner[18478]: Virus and Content Scanning: Starting

MailScanner[18478]: Requeue: A141A43EC6.A8809 to 3E5AE43EC9

postfix/qmgr[18466]: 3E5AE43EC9: from=<>, size=669, nrcpt=1 (queue active)

MailScanner[18478]: Uninfected: Delivered 1 messages

MailScanner[18478]: Deleted 1 messages from processing-database

這是我截取的一段日誌。可以看到mailscanner在掃描郵件了。

==================================================================

7.webmail

終於最後一步了。這一步按照搭建過程其實在做完smtp和pop3服務後就該做了,我做測試就是用extman添加虛擬域和用戶的。命令行暫時還沒研究怎麼添加虛擬用戶。

 extman需要幾個perl包,系統光盤中沒有的需要自行下載了。

 我用命令羅列了一個腳本。安裝起來更方便些:

#! /bin/bash

unixsyslogver=Unix-Syslog-0.100
dbdmysqlver=DBD-mysql-3.0008
dbiver=DBI-1.612
filetrilver=File-Tail-0.99.3

extmailver=extmail-1.2
extmanver=extman-1.1

#########setup_apache_virtual_directory######

mkdir -p /usr/local/httpd/htdocs

#################################
tar zxvf $unixsyslogver.tar.gz
cd $unixsyslogver
perl Makefile.PL
make;make intall
cd -
#################################
tar zxvf $dbdmysqlver.tar.gz
cd $dbdmysqlver
perl Makefile.PL
make;make intall
cd -
###################################
tar zxvf $dbiver.tar.gz
cd $dbiver
perl Makefile.PL
make;make intall
cd -
###################################
tar zxvf $filetrilver.tar.gz
cd $filetrilver
perl Makefile.PL
make;make intall
cd -

###################################

tar zxvf $extmailver
tar zxvf $extmanver
mv $extmailver/ /usr/local/httpd/htdocs/extmail
mv $extmanver/ /usr/local/httpd/htdocs/extman
chown -R vmail:vmail /usr/local/httpd/htdocs/extmail/cgi
chown -R vmail:vmail /usr/local/httpd/htdocs/extman/cgi
mkdir /tmp/extman
chown -R vmail:vmail /tmp/extman
cp /usr/local/httpd/htdocs/extman/docs/mysql_virtual_* /etc/postfix/

編輯httpd.conf把User和Group改成vmail用戶;加入虛擬機設置,映射到htdocs目錄。我這裏是爲了方便,正式環境要規範一些。

<VirtualHost *:80>
ServerName mail.test.com
DocumentRoot /usr/local/httpd/htdocs/extmail/html/
ScriptAlias /extmail/cgi/ /usr/local/httpd/htdocs/extmail/cgi/
Alias /extmail/ /usr/local/httpd/htdocs/extmail/html/
ScriptAlias /extman/cgi/ /usr/local/httpd/htdocs/extman/cgi/
Alias /extman/ /usr/local/httpd/htdocs/extman/html/
</VirtualHost>

編輯/usr/local/httpd/htdocs/extmail/webmail.cf,修改以下關鍵選項:

SYS_CONFIG = /usr/local/httpd/htdocs/extmail/

SYS_LANGDIR = /usr/local/httpd/htdocs/extmail/lang

SYS_TEMPLDIR = /usr/local/httpd/htdocs/extmail/html

SYS_AUTH_TYPE = mysql

SYS_MAILDIR_BASE = /mailbox

SYS_MYSQL_USER = extmail
SYS_MYSQL_PASS = extmail
SYS_MYSQL_DB = extmail
SYS_MYSQL_HOST = localhost
SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock

SYS_AUTHLIB_SOCKET = /usr/lcoal/authlib/var/spool/authdaemon/socket

SYS_G_ABOOK_FILE_PATH = /usr/local/httpd/htdocs/extmail/globabook.cf

編輯/usr/local/httpd/htdocs/extman/webman.cf,修改以下關鍵選項:

SYS_CONFIG = /usr/local/httpd/htdocs/extman/

SYS_LANGDIR = /usr/local/httpd/htdocs/extman/lang

SYS_TEMPLDIR = /usr/local/httpd/htdocs/extman/html

SYS_MAILDIR_BASE = /mailbox
SYS_DEFAULT_UID = 1010

SYS_DEFAULT_GID = 1010
SYS_MYSQL_USER = webman
SYS_MYSQL_PASS = webman
SYS_MYSQL_DB = extmail
SYS_MYSQL_HOST = localhost
SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock

啓動以下守護進程,不啓動話在進入extman後臺是不顯示系統統計信息。

 /usr/local/httpd/htdocs/extman/daemon/cmdserver --daemon

安裝rrdtool讓extman顯示圖形日誌

tar zxvf rrdtool-1.0.50.tar.gz
cd rrdtool-1.0.50
./configure
make;make install

cp /root/rrdtool-1.0.50/perl-shared/blib/lib/RRDs.pm /usr/lib/perl5/

cp -a /root/rrdtool-1.0.50/perl-shared/blib/arch/auto/RRDs/* /usr/lib/perl5/

注:最好別用高版本的,不好安裝,低版本也不影響顯示。不過安裝完之後啓動mailgraph-init 還是提示找不到 RRDs.pm。用find看到解壓包內包含所需文件,乾脆拷貝過去。

cp -r /usr/local/httpd/htdocs/extman/addon/mailgraph_ext/ /usr/local/mailgraph_ext/

/usr/local/mailgraph_ext/mailgraph-init start 

==================================================================

8.後記

雖然以前也配置過類似系統,但以前使用的相關功能軟件不同。資料也比較多。還是很費勁。現在配置的這個系統也是經過無數次調試。終於成功了,性能方面應該能滿足一般中小企業的用戶了,當然還有待調優相關軟件的設置。達到更好的性能。

配置的時候一定要小心各配置文件的細節,也許多一個標點或打錯字母都讓你找半天原因。

我用crt打開幾個窗口。一個幾乎是 tail -f /var/log/maillog 沒停過。

還有就是谷歌了。我發現谷歌有些方面是比百度好使!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章