歡迎您光臨本站 註冊首頁

RHEL5上安裝支持虛擬域,垃圾郵件過濾,殺毒功能的郵件系統Postfix+dovecot

RHEL5上安裝郵件系統Postfix+dovecot+MailScanner+spamassassin+f-prot+PostfixAdmin+SquirrelMail



作者:LEO  http://zqli.cublog.cn/
概要:

本文講述在安裝了RHEL5上,配置一台Postfix郵件伺服器的過程。實現虛擬域、虛擬用戶、POP3、POP3S、SMTP、SMTPS、IMAP、IMAPS、防毒、防SPAM、網頁郵件功能。



涉及的軟體

1.        Red Hat Enterprise Linux Server release 5 (Tikanga)

2.        MySQL

系統自帶

用於存儲虛擬域、虛擬用戶等信息。

3.        Apache

系統自帶

運行網頁郵件SquirrelMail和PostfixAdmin時使用。

4.        PHP

系統自帶

運行網頁郵件SquirrelMail和PostfixAdmin時使用。

5.        Cyrus-sasl

系統自帶

實現帶驗證的SMTP時使用。

6.        Courier authentication library

從http://download.chinaunix.net/下載

實現帶驗證的SMTP時使用。

7.        Postfix

從http://www.postfix.org 下載

一個MTA,雖然RHEL 4 自帶Postfix,但因為其不支持SSL及Mysql,所以我們需要自行編譯。

8.        PostfixAdmin

從http://www.postfixadmin.com/ 下載

虛擬域、虛擬用戶等信息是放在Mysql內的,安裝PostfixAdmin后,就可以用瀏覽器管理這些信息。

9.        SquirrelMail

系統自帶或從http://www.squirrelmail.org/download.php下載

一個基於IMAP的Webmail客戶端。

10.        Dovecot

系統自帶

提供POP3,POP3S,IMAP,IMAPS功能。

11.        F-prot

從http://www.f-prot.com 下載,Linux workstation 版個人使用是免費的

提供殺毒功能,據說速度和病毒庫比開源的Clamav好。

12.        SpamAssassin

系統自帶

提供過濾垃圾郵件功能。

13.        MailScanner

從http://www.mailscanner.info/ 下載

Postfix 是使用MailScanner 調用f-prot 與SpamAssassin,或者其它調用方法效率更好,但MailScanner配置比較直觀。



作者:LEO  http://zqli.cublog.cn/

配置過程

1.        基本軟體安裝

默認方式安裝RHEL5,不選中任何類型伺服器(如WEB伺服器,開發伺服器,虛擬伺服器等),安裝上文中提及「系統自帶」的軟體。

下載其它需要的軟體。



安裝MySQL

# rpm -ivh mysql-5.0.22-2.1.i386.rpm

# rpm -ivh mysql-server-5.0.22-2.1.i386.rpm

# chkconfig mysqld on



安裝Apache

# rpm -ivh httpd-2.2.3-6.el5.i386.rpm

# rpm -ivh httpd-manual-2.2.3-6.el5.i386.rpm

# chkconfig httpd on



安裝PHP

# rpm -ivh php-common-5.1.6-5.el5.i386.rpm

# rpm -ivh php-pdo-5.1.6-5.el5.i386.rpm

# rpm -ivh php-mysql-5.1.6-5.el5.i386.rpm

# rpm -ivh php-cli-5.1.6-5.el5.i386.rpm

# rpm -ivh php-5.1.6-5.el5.i386.rpm



安裝Cyrus-sasl

# rpm –ivh cyrus-sasl-2.1.22-4.i386.rpm



安裝squirrelmail

# rpm -ivh squirrelmail-1.4.8-4.el5.noarch.rpm



安裝dovecot

# rpm -ivh dovecot-1.0-1.2.rc15.el5.i386.rpm



安裝spamassassin

# rpm -ivh perl-IO-Zlib-1.04-4.2.1.noarch.rpm

# rpm -ivh perl-Archive-Tar-1.30-1.fc6.noarch.rpm

# rpm -ivh perl-Digest-SHA1-2.11-1.2.1.i386.rpm

# rpm -ivh perl-Socket6-0.19-3.fc6.i386.rpm

# rpm -ivh perl-IO-Socket-INET6-2.51-2.fc6.noarch.rpm

# rpm -ivh perl-Net-SSLeay-1.30-4.fc6.i386.rpm

# rpm -ivh perl-IO-Socket-SSL-1.01-1.fc6.noarch.rpm

# rpm -ivh perl-Digest-HMAC-1.01-15.noarch.rpm

# rpm -ivh perl-Net-IP-1.25-2.fc6.noarch.rpm

# rpm -ivh perl-Net-DNS-0.59-1.fc6.i386.rpm

# rpm -ivh spamassassin-3.1.7-4.el5.i386.rpm



# tar xvf postfixadmin-2.1.0.gz

# mv postfixadmin-2.1.0 /var/www/html/pa

# service mysqld start

# mysql -uroot < /var/www/html/pa/DATABASE_MYSQL.TXT

# cp /var/www/html/pa/config.inc.php.sample /var/www/html/pa/config.inc.php

打開瀏覽器訪問 http://IP/pa,然後按提示增加兩個虛擬域名mailidc.cn 和 zqli.com,增加兩個虛擬用戶leo@mailidc.cn,zqli@zqli.com



# vi /etc/httpd/conf/httpd.conf

加入以下內容,加強安全性,要不每個人不經認證都可以用postfixadmin

<Directory "/var/www/html/pa" >

Options FollowSymLinks

DirectoryIndex index.php

AllowOverride None

AuthType Basic

authname Private

authuserfile /var/phpaccess/leo

require valid-user

Order allow,deny

Allow from all

</Directory>



注意/var/phpaccess/leo是我的密碼文件名

# mkdir /var/phpaccess

# touch /var/phpaccess/leo

# cd /var/phpaccess/

# htpasswd -c leo leo  #添加用戶leo

New password:

Re-type new password:

Adding password for user leo



然後我們就可以打開網頁瀏覽器來訪問了

http://ip/pa

至此postfixadmin配置完畢。在這裡我推薦對mysql比較了解的人更改默認的postfix連接密碼:默認數據名為postfix,用戶名密碼都是postfix。我們下面的配置還是用回默認的用戶名和密碼。



作者:LEO  http://zqli.cublog.cn/

安裝postfix所依賴的包

# rpm -ivh db4-devel-4.3.29-9.fc6.i386.rpm

# rpm -ivh e2fsprogs-devel-1.39-8.el5.i386.rpm

# rpm -ivh krb5-devel-1.5-17.i386.rpm

# rpm -ivh zlib-devel-1.2.3-3.i386.rpm

# rpm -ivh openssl-devel-0.9.8b-8.3.el5.i386.rpm

# rpm -ivh mysql-devel-5.0.22-2.1.i386.rpm

# rpm -ivh cyrus-sasl-devel-2.1.22-4.i386.rpm



編譯、配置Postfix

先刪除sendmail

# rpm -e sendmail –nodeps

# groupadd postfix

# groupadd postdrop

# useradd postfix -g postfix -c "Postfix user" -d /dev/null -s /sbin/nologin

# tar zxvf postfix-2.4.3.tar.gz

# make -f Makefile.init makefiles 'CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DUSE_TLS -DUSE_CYRUS_SASL -DUSE_SASL_AUTH -I/usr/include/sasl' 'AUXLIBS=-L/usr/lib/mysql -lmysqlclient -lz -lm -L/usr/lib -lssl -lcrypto -lsasl2'

# make

# make install

註:「make install」命令后的所有問題都直接敲回車鍵即可。



編輯/etc/postfix/main.cf 為以下內容

#=====================BASE=========================

myhostname = mail.mailidc.cn

mydomain = mailidc.cn

myorigin = $mydomain

mydestination = $myhostname localhost localhost.$mydomain

mynetworks = 192.168.1.0/24 127.0.0.0/8

inet_interfaces = all

#=====================Vritual Mailbox settings=========================

virtual_mailbox_base = /var/spool/mail

virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf

virtual_alias_domains =

virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf

virtual_uid_maps = static:501

virtual_gid_maps = static:502

virtual_transport = virtual

maildrop_destination_recipient_limit = 1

maildrop_destination_concurrency_limit = 1

#====================QUOTA========================

message_size_limit = 14336000

virtual_mailbox_limit = 20971520

virtual_create_maildirsize = yes

virtual_mailbox_extended = yes

virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf

virtual_mailbox_limit_override = yes

virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please try again later.

virtual_overquota_bounce = yes

#====================SASL========================

broken_sasl_auth_clients = yes

smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,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_pipelining,reject_unauth_destination,permit

smtpd_sasl_auth_enable = yes

smtpd_sasl_local_domain = $myhostname

smtpd_sasl_security_options = noanonymous

smtpd_sasl_application_name = smtpd

smtpd_banner=$myhostname ESMTP "Version not Available"



readme_directory = no

sample_directory = /etc/postfix

sendmail_path = /usr/sbin/sendmail

html_directory = no

setgid_group = postdrop

command_directory = /usr/sbin

manpage_directory = /usr/local/man

daemon_directory = /usr/libexec/postfix

newaliases_path = /usr/bin/newaliases

mailq_path = /usr/bin/mailq

queue_directory = /var/spool/postfix

mail_owner = postfix



編輯/etc/postfix/mysql_virtual_alias_maps.cf 為以下內容

user = postfix

password = postfix

hosts = localhost

dbname = postfix

table = alias

select_field = goto

where_field = address



編輯/etc/postfix/mysql_virtual_domains_maps.cf 為以下內容

user = postfix

password = postfix

hosts = localhost

dbname = postfix

table = domain

select_field = description

where_field = domain



編輯/etc/postfix/mysql_virtual_mailbox_limit_maps.cf 為以下內容

user = postfix

password = postfix

hosts = localhost

dbname = postfix

table = mailbox

select_field = quota

where_field = username



編輯/etc/postfix/mysql_virtual_mailbox_maps.cf 為以下內容

user = postfix

password = postfix

hosts = localhost

dbname = postfix

table = mailbox

select_field = maildir

where_field = username



配置SMTP 認證

編輯 /usr/lib/sasl2/smtpd.conf 為以下內容

pwcheck_method: authdaemond

log_level: 3

mech_list: plain login

authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket



安裝Courier authentication library

# tar jxvf courier-authlib-0.58.tar.bz2

# cd courier-authlib-0.58

# ./configure --prefix=/usr/local/courier-authlib --without-authpam --without-authldap --without-authpwd --without-authshadow --without-authvchkpw --without-authpgsql  --with-authmysql --with-mysql-libs=/usr/lib/mysql --with-mysql-includes=/usr/include/mysql --with-redhat  --with-authmysqlrc=/usr/local/courier-authlib/etc/authmysqlrc  --with-authdaemonrc=/usr/local/courier-authlib/etc/authdaemonrc CFLAGS="-march=i686 -O2 -fexpensive-optimizations" CXXFLAGS="-march=i686 -O2 -fexpensive-optimizations"



# make

# make install

# chmod 755 /usr/local/courier-authlib/var/spool/authdaemon/

# cp /usr/local/courier-authlib/etc/authdaemonrc.dist /usr/local/courier-authlib/etc/authdaemonrc



修改/usr/local/courier-authlib/etc/authdaemonrc 文件

authmodulelist="authmysql"

authmodulelistorig="authmysql"

daemons=10



編輯/usr/local/courier-authlib/etc/authmysqlrc 為以下內容,其中501,502 為postfix 用戶的UID和GID。

MYSQL_SERVER         localhost

MYSQL_USERNAME       postfix

MYSQL_PASSWORD       postfix

MYSQL_SOCKET         /var/lib/mysql/mysql.sock

MYSQL_DATABASE       postfix

MYSQL_USER_TABLE     mailbox

MYSQL_CRYPT_PWFIELD   password

MYSQL_UID_FIELD       '501'

MYSQL_GID_FIELD       '502'

MYSQL_LOGIN_FIELD     username

MYSQL_HOME_FIELD     concat('/var/spool/mail/',maildir)

MYSQL_MAILDIR_FIELD   concat('/var/spool/mail/',maildir)

MYSQL_NAME_FIELD     name



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

# chkconfig --level 35 courier-authlib on

# chmod 755 /etc/init.d/courier-authlib

# service courier-authlib start



此時你已經擁有一台帶驗證的SMTP 伺服器,用Outlook 、Foxmail測試一下吧,用戶名採用usename@domainName.com 形式。到了這一步,可以正常地發信了。



作者:LEO  http://zqli.cublog.cn/

增加SSL功能,配置SMTPS服務

在/etc/postfix/main.cf 增加以下內容

smtp_use_tls = yes

smtpd_use_tls = yes

smtp_tls_note_starttls_offer = yes

smtpd_tls_key_file = /etc/ssl/smtpd.pem

smtpd_tls_cert_file = /etc/ssl/smtpd.pem

smtpd_tls_CAfile = /etc/ssl/smtpd.pem

smtpd_tls_loglevel = 1

smtpd_tls_received_header = yes

smtpd_tls_session_cache_timeout = 3600s

tls_random_source = dev:/dev/urandom



生成證書

# mkdir /etc/ssl

# cd /etc/ssl

# openssl req -new -x509 -nodes -out smtpd.pem -keyout smtpd.pem -days 3650



重新啟動postfix

# postfix reload



這時SMTPS功能應該能正常工作了。有能力測試的網友們請驗證一下這功能。



配置Dovecot,增加IMAP,IMAPS,POP3,POP3S功能

由於Dovecot 是系統自帶的,配置兩個文件,再生成證書就可以了。



編輯 /etc/dovecot.conf 為以下內容

base_dir = /var/run/dovecot/

protocols = imap imaps pop3 pop3s

listen = *

ssl_disable = no

ssl_cert_file = /etc/pki/dovecot/certs/dovecot.pem

ssl_key_file = /etc/pki/dovecot/private/dovecot.pem

login_dir = /var/run/dovecot/login

default_mail_env = maildir:/var/spool/mail/%u/

auth default {

mechanisms = plain login digest-md5 cram-md5

  passdb sql {

    args = /etc/dovecot-mysql.conf

    }

  userdb sql {

    args = /etc/dovecot-mysql.conf

  }

}

first_valid_uid = 501





編輯 /etc/dovecot-mysql.conf 為以下內容

driver = mysql

connect = host=/var/lib/mysql/mysql.sock dbname=postfix user=postfix password=postfix

default_pass_scheme = CRYPT

password_query = SELECT password FROM mailbox WHERE username = '%u'

user_query = SELECT maildir, 501 AS uid, 502 AS gid FROM mailbox WHERE username = '%u'





生成證書

# mkdir /etc/ssl/certs

# mkdir /etc/ssl/private

# cd /usr/share/doc/dovecot-1.0/examples

# sh mkcert.sh



啟動Dovecot 服務

# chown postfix /var/spool/mail/

# service dovecot start

# chkconfig --level 35 dovecot on



順利的話,此時SMTP、SMTPS、POP3、POP3S已經配置完成。

作者:LEO  http://zqli.cublog.cn/
《解決方案》

編輯/etc/postfix/mysql_virtual_alias_maps.cf 為以下內容
編輯/etc/postfix/mysql_virtual_domains_maps.cf 為以下內容
編輯/etc/postfix/mysql_virtual_mailbox_limit_maps.cf 為以下內容
編輯/etc/postfix/mysql_virtual_mailbox_maps.cf 為以下內容
編輯 /usr/lib/sasl2/smtpd.conf 為以下內容



以上幾項我怎麼都沒有呢
《解決方案》

偶也寫了一篇文檔,並寫了自動安裝配置的腳本:
http://code.google.com/p/rhms/

rhms 代表的是 「Mail Server Solution for Red Hat series」,是用於快速安裝和配置 郵件伺服器的 shell 腳本。

rhms 並不集成和捆綁一個開源的操作系統,而是在操作系統安裝好后使用的工具。

rhms 目前支持以下系統及平台:
OS         Version         Architecture
RHEL         5.0, 5.1, 5.2-beta         i386, x86_64
CentOS         5.0, 5.1         i386, x86_64
《解決方案》

謝謝分享~~

[火星人 ] RHEL5上安裝支持虛擬域,垃圾郵件過濾,殺毒功能的郵件系統Postfix+dovecot已經有657次圍觀

http://coctec.com/docs/service/show-post-22710.html