搭建基于Postfix的WEB MAIL系统-Extmail、postfix、Courier-imap、Zeus、MailScanner
搭建基于Postfix的WEB MAIL系统(Postfix+courier-imap+cyrus-sasl2+Extmail+Extman+Zeus_Web_Server+spamassassin+Clamav+mailscanner)
作者:Grass_h
E-Mail:mrhuo at sohu dot com
QQ:31340564
*文章可转载,但请注明出处,最初发表于[url]www.extmail.org[/url]
PS:最好保留作者信息,以方便交流
----以下文档尽可能的保证描述及配置的正确性,因本人水平有限,会造成一些描述及对相关概念的理解上的错误,请各位见谅及指明我会立即做出相应修改,并在以后会逐步完善及增加新的模块。因为UNIX系统下的MAIL系统的搭建涉及到相关技术太多,无法一一做出说明,如需其他相关信息可参考其他资料或与我联系。
测试环境:VMware workstation,FreeBSD 5.4
软件:软件基本上都使用ports安装。
MAIL Server部分使用Postfix+courier-imap+cyrus-sasl2+Mysql;防病毒邮件部分使用spamassassin+Clamav+mailscanner。主要参考了杨廷勇先生的《基于FreeBSD和Postfix的邮件系统与邮件列表的web mail安装4.51》。[url]www.toping.net[/url]
WEB Mail和MAIL Admin部分使用hzqbbc开发的Extmail系列系统,主要参考hzqbbc的Extmail相关文档。[url]www.extmail.org[/url]
WEB Server使用Zeus Web Server 4.3R1 For FreeBSD 5.X。[url]www.zeus.com[/url]
在此对以上两位DX及我在安装这套系统时对我提供支持的朋友表示感谢!
实现功能:多域名,WebMail、防邮件病毒、邮件用户WEB管理界面
安装步骤:
一、安装VMware workstation。(步骤略,具体安装及使用可参考[url]www.vmware.cn[/url])
二、安装FreeBSD 5.4
采用光盘安装方式,除正常mount point外单独分出一个/data来放置所有的数据文件,独立的数据point主要是个人习惯,及考虑以后管理上的方便。
选择MINI方式安装并添加compat4x、man、ports、src、cvsup-without-gui。
配置网络参数,启用ssh
安装完后重新启动服务器,这样操作系统部分安装完毕。
三、操作系统安装以后的配置
按照自己的使用习惯来设置相应的环境变量。
根据应用的需要及自己服务器的配置来做出相应的内核优化,具体步骤及方法请参考《freebsd 用户手册》。
四、升级ports
ee /usr/share/examples/cvsup/ports-supfile
修改为*default host=cvsup.freebsd.org #相关CVSUP服务器列表可以从[url]www.freebsd.org[/url]获得
cvsup /usr/share/examples/cvsup/ports-supfile #升级ports
五、安装Mysql
cd /usr/ports/databases/mysql41-server
make WITH_LINUXTHREADS=yes BUILD_OPTIMIZED=yes BUILD_STATIC=yes install clean #加入优化参数
安装完以后并没有/etc/my.cnf文件,虽然可以运行,但是最好还是建立一个以对你的机器做出相应的优化。
cd /usr/local/share/mysql
此文件夹下有my-huge.cnf、my-large.cnf、my-medium.cnf、my-small.cnf四个文件,根据你的服务器的配置使用相应的文件,只需要复制到/etc/my.cnf就可以了,如需做其他调整修改这个文件就行了。
mkdir /data/mysqldb #以后用来放置我们的数据库文件
chown -R mysql:mysql /data/mysqldb
ee /etc/rc.conf,加入:
mysql_enable="YES" #mysql启动项
mysql_dbdir="/data/mysqldb"
存盘后退出
sh /etc/rc #不开机重新加载/etc/rc.conf配置
mysqladmin -u root -p password password #更改mysql的root密码为password
六、安装php4
本套系统本身并没有使用到php相关技术,只因为需要使用phpMyAdmin管理mysql,但不是必须
cd /usr/ports/www/php4-cgi #因为zeus使用fast-cgi模式调用PHP
make install clean
选择FASTCGI、PATHINFO、MULTIBYTE #如因选择错误而导致需重新安装时,在ports目录中make后不会再出现选择菜单,这时可以到/var/db/ports中删除相应的目录后即可重新make
cp /usr/local/etc/php.ini-dist /usr/local/etc/php.ini
cd /usr/ports/lang/php4-extensions
make install clean
根据需要选择相应的组件,一般除默认选项增加gd、gettext即可
如需安装zend optimized可到[url]www.zend.com[/url]注册用户后下载相应软件包安装即可,安装程序将修改php.ini,如zend optimized正确安装后PHP不能正常调用,比较典型的问题是因为在安装php的时候选择了debug,重新安装php即可
七、安装zeus web server
登录[url]www.zeus.com[/url],注册一个用户,下载相应的软件包,并下载试用license,将下载的软件包上传至服务器,并解压缩
./zinstall
其中会要求你输入key的路径,即下载的试用license
按照提示安装即可,zeus web admin的地址为[url]http://YourIP:9090[/url],用户名为admin
进入管理界面后点击Licensing查看license安装是否正确
八、设置zeus web server的PHP
/usr/local/zeus/stop-zeus #停止zeus服务
cd /usr/local/zeus/web/php
mv php php.old #备份zeus自带的php
ln -s /usr/local/bin/php /usr/local/zeus/web/php/php
/usr/local/zeus/start-zeus #启动zeus服务
mkdir /data/web #建立web文档目录
echo "<?phpinfo()?>" > /data/web/index.php #建立php测试页
进入zeus web admin,Create-Virtual Server
设置相应主机参数后进入主机设置界面
Third Party\php -> Enabling PHP Support\enable -> Apply Changes
API Support -> FastCGI -> Security Configurables\Owner of the requested file -> Apply Changes #设置运行脚本的用户为文件的owner
在页的最上面This configuration has been modified. Click here for details or to make it take effect. -> Commit
测试刚建立的主机,如测试页运行正常即可说明php能够被zeus成功调用
九、安装并设置phpMyAdmin
cd /usr/ports/databases/phpmyadmin
make install clean #如果你的mysql版本是5.X则选择MYSQLI,如为4.X则不选;openssl建议也不要选,因为反复装了几次发现有的时候php加载openssl模块后在zeus下会有问题,具体原因不是很清楚。如果有问题可以在/usr/local/etc/php/extensions.ini文件中将openssl模块禁用。
cp -R /usr/local/www/phpMyAdmin /data/web/
cd /data/web/phpMyAdmin
cp config.default.php config.inc.php
ee config.inc.php
修改$cfg['PmaAbsoluteUri'] = '' 为URL路径;$cfg['Servers'][$i]['auth_type']='http'更改登录验证模式为HTTP
此时输入phpMyAdmin地址应该弹出要求输入用户名及密码的对话框,输入正确后即可登录
十、安装CGI的DBI DBD
因为extmail和extman需要cgi的DBI和DBD支持,还有zeus已经内置了perl 5.8.6所以只需要安装模块即可
ee ~/.cshrc
加入setenv ZEUSHOME /usr/local/zeus
exit并重新以root用户登录
echo $ZEUSHOME
下载CGI的DBI及DBD包,并解压缩,注意DBD相应版本
安装DBI,进入解压缩后的目录,/usr/local/zeus/zperl/bin/perl Makefile.PL,make ,make test ,make install
安装DBD,进入解压缩后的目录,/usr/local/zeus/zperl/bin/perl Makefile.PL,make ,make test ,make install,其中在make test的时候会有一个error,不用理直接make install即可
----如果以上步骤都没有问题,那么恭喜您已经在FreeBSD平台上搭建了一套WEB SERVER,并可以支持CGI、PHP,后台数据库使用mysql,只需要再加一个FTP Server就可以成为一套虚拟主机系统了。
----如果以上都没有问题即可以往下进行,下面即将开始安装及设置MAIL Server相关服务
十一、设置数据库
从[url]www.extmail.org[/url]下载最新的软件包,其中extman中有我们现在需要的建库脚本,docs/extmail.sql(建库脚本)、init.sql(增加测试用户和管理用户)
extmail.sql为新建一个数据库extmail,并建立两个mysql系统用户extmail和webman
如果需要使用已有的数据库只需要其中建库的脚本,并复制到phpmyadmin中在相应数据库下运行
导入extmail.sql
mysql -u root -ppassword < extmail.sql
导入init.sql
进入phpmyadmin修改extmail及webman用户的密码
mysql -u root -ppassword extmail < init.sql
init.sql会建立[email]test@extmail.org[/email]测试帐号,密码为test;[email]root@extmail.org[/email]为extman管理员帐号,密码为extmail
**init.sql脚本建立的用户的UID和GID是1000,需要改成125,即和postfix用户相同,否则会有权限问题
十二、安装Courier-imap,支持POP3/IMAP4
cd /usr/ports/mail/courier-imap
make install clean
选择OPENSSL和AUTH_MYSQL
ee /etc/rc.conf,根据安装完最后的提示信息加入:
courier_authdaemond_enable="YES"
courier_imap_pop3d_enable="YES"
courier_imap_imapd_enable="YES"
存盘退出
cd /usr/local/etc/courier-imap
cp imapd.cnf.dist imapd.cnf
cp pop3d.cnf.dist pop3d.cnf
/usr/local/etc/rc.d/courier-authdaemond.sh start
启动courier-authdaemond进程
chmod +x /var/run/authdaemond
十三、安装Cyrus SASL2,通过Cyrus-SASL对存储在MySQL数据库中的用户进行认证
cd /usr/ports/security/cyrus-sasl2
make WITH_AUTHDAEMON=yes install clean
ee /usr/local/lib/sasl2/smtpd.conf #以验证SMTP,内容如下:
pwcheck_method: authdaemond
log_level: 3
mech_list: PLAIN LOGIN
authdaemond_path:/var/run/authdaemond/socket
十四、安装postfix,MTA服务器
cd /usr/ports/mail/postfix
make install clean
选择sasl2、mysql、tls、vda
安装过程中会提示:
You need user "postfix" added to group "mail".Would you like me to add it [y]? y
Would you like to activate Postfix in /etc/mail/mailer.conf [n]? n
根据提示在/etc/rc.conf中加入:
sendmail_enable="YES"
sendmail_flags="-bd"
sendmail_pidfile="/var/spool/postfix/pid/master.pid"
sendmail_procname="/usr/local/libexec/postfix/master"
sendmail_outbound_enable="NO"
sendmail_submit_enable="NO"
sendmail_msp_queue_enable="NO"
mv /usr/sbin/sendmail /usr/sbin/sendmail.old
ln -s /usr/local/sbin/sendmail /usr/sbin/sendmail
echo ‘postfix: root’ >> /etc/aliases #冒号和root中间为tab
/usr/local/bin/newaliases
chown postfix:postfix /etc/opiekeys
十五、配置postfix
ee /usr/local/etc/postfix/main.cf #编辑postfix配置文件
smtpd_helo_required = yes
strict_rfc821_envelopes = yes
smtpd_etrn_restrictions = permit_mynetworks, reject
#=====================BASE基本配置=====================
myhostname = mail.extmail.org #主机名
mydomain = extmail.org #默认的域名
mydestination = $myhostname
local_recipient_maps =
command_directory = /usr/local/sbin
local_transport = virtual
#=====================MySQL虚拟用户配置=====================
virtual_alias_maps = mysql:/usr/local/etc/postfix/mysql_virtual_alias_maps.cf
virtual_uid_maps = static:125 #虚拟用户的UID
virtual_gid_maps = static:125 #虚拟用户的GID
virtual_minimum_uid = 125 #认可的最小的UID号
virtual_mailbox_base = /data/mail #邮件保存的目录
virtual_mailbox_domains = mysql:/usr/local/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_limit = 51200000
virtual_mailbox_maps = mysql:/usr/local/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_transport = virtual
#=====================Quota MAIL磁盘限额=====================
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/usr/local/etc/postfix/mysql_virtual_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认证=====================
smtpd_sasl_auth_enable = yes #启用认证
smtpd_sasl_security_options = noanonymous #不允许匿名用户
broken_sasl_auth_clients = yes #支持OE等非标准客户端
smtpd_delay_reject = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_auth_destination,reject
smtpd_client_restrictions = permit_sasl_authenticated
建立/data/mail文件夹,并更改所有者及组为postfix
复制extman的docs目录中的mysql_virtual_alias_maps.cf、mysql_virtual_domains_maps.cf、mysql_virtual_limit_maps.cf、mysql_virtual_mailbox_maps.cf四个文件到/usr/local/etc/postfix/
并修改每个文件中的数据库连接信息,以与你的设置相同
十六、配置Courier-imap
修改/usr/local/etc/courier-imap/imapd
IMAP_CAPABILITY="IMAP4rev1 CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA"
修改/usr/local/etc/courier-imap/pop3d
POP3AUTH="LOGIN CRAM-MD5 CRAM-SHA1"
cd /usr/local/et/authlib
mv authmysqlrc authmysqlrc.bak
ee authmysqlrc #新建courier-imap的mysql配置文件,内容如下:
MYSQL_SERVER localhost
MYSQL_USERNAME extmail
MYSQL_PASSWORD passowrd
MYSQL_PORT 0
MYSQL_OPT 0
MYSQL_DATABASE extmail
MYSQL_USER_TABLE mailbox
MYSQL_CRYPT_PWFIELD password
MYSQL_UID_FIELD '125'
MYSQL_GID_FIELD '125'
MYSQL_LOGIN_FIELD username
MYSQL_HOME_FIELD concat('/data/mail/', homedir)
MYSQL_NAME_FIELD name
MYSQL_MAILDIR_FIELD concat('/data/mail/', maildir)
MYSQL_QUOTA_FIELD quota
mv authdaemonrc authdaemonrc.bak
ee authdaemonrc
authmodulelist="authmysql"
authmodulelistorig="authmysql"
version="authdaemond.mysql"
daemons=5
authdaemonvar=/var/run/authdaemond
subsystem=mail
DEBUG_LOGIN=0
DEFAULTOPTIONS="wbnodsn=1"
十七、建立测试用户的相关目录
mkdir -p /data/mail/extmail.org/test #根据main.cf中mysql虚拟用户配置中邮件保存目录和数据库中此用户的homedir设置
/usr/local/bin/maildirmake /var/mail/extmail.org/test/Maildir #建立用户的mail保存目录
chown -R postfix:postfix /data/mail #改变/data/mail目录的owner,给postfix权限
----到这里最基本的Mail系统已经搭建完毕了,重新启动服务器后可以试着用telnet或是pop3客户端收一下信了,如果有问题可以tail -f /var/log/maillog监控日志后调试,如果像我一样只是测试的环境还需要自己来做一个DNS服务器来测试一下是否可以正常收信
十八、安装并配置extmail,WEB Mail
我们将extmail的原文件复制到/data/webmail/extmail/,注意这不是网站的/目录将来会用alias方式设置到网站上
1、设置zeus
打开刚才建立的那个主机的设置界面
API Support->CGI->General->Enable->Apply Changes 启用CGI
API Support->CGI->Sandboxing->Security Configurables->Run CGIs as owner of the requested file->Apply Changes
URL Handling->URL Mappings->Add a Directory Alias下有两个对话框,上面是http路径,下面是系统路径,做相关设置后->Apply Changes
**设置如下/extmail/->/data/webmail/extmail/html/,/extmail/cgi/->/data/webmail/extmail/cgi/
This configuration has been modified. Click here for details or to make it take effect.->Commit
**基本设置完毕,剩下的就是设置一些LOG了,建议关闭不用的API,还有在Directory Requests->Directory Listing中设置目录浏览,因为安全的问题建议关闭
2、chown -R postfix:postfix /data/webmail/extmail
3、cp webmail.cf.default webmail.cf #extmail配置文件
4、编辑webmail.cf,主要修改如下配置
SYS_CONFIG = /data/webmail/extmail/
SYS_LANGDIR = /data/webmail/extmail/lang
SYS_TEMPLDIR = /data/webmail/extmail/html
SYS_MAILDIR_BASE = /data/mail
SYS_MYSQL_USER = extmail
SYS_MYSQL_PASS = password
SYS_MYSQL_DB = extmail
SYS_MYSQL_HOST = localhost
SYS_MYSQL_SOCKET = /tmp/mysql.sock #在FB下默认的mysql.sock目录是在/tmp/mysql.sock
5、使用浏览器登录测试
十九、安装并配置extman,管理工具
将原文件复制到/data/webmail/extman/
1、设置zeus
URL Handling->URL Mappings->Add a Directory Alias
/extman/->/data/webmail/extman/html/,/extman/cgi/->/data/webmail/extman/cgi/
2、chown -R postfix:postfix /data/webmail/extmail
3、编辑webman.cf,和extmail的配置基本一致,其中有一项是设置临时的session目录,需新建,还有如下:
SYS_MIN_UID = 125 #系统最小UID
SYS_MIN_GID = 125 #系统最小GID
SYS_DEFAULT_UID = 125 #默认UID
SYS_DEFAULT_GID = 125 #默认GID
4、建立extman的库文件
cd /data/webmail/extman/libs/Ext
./buildlink.sh clean
./buildlink.sh build /data/mail/webmail/extmail/libs/Ext/
5、chown -R postfix:postfix /data/webmail/extman
6、使用浏览器登录测试
----以上支持web mail的系统已经建立好了
----以下为防病毒邮件部分,是转杨先生的文章,原文中少了一步,复制/usr/local/etc/rc.d/mailscanner.sh.sample->mailscanner.sh,否则mailscanner起动不了,所有的收或发的邮件都会被drop掉。还有杨先生改的mailscanner的中文提示包中少了一个rejection.report.txt启动会报错,可以从en文件夹中找到这个文件名的文件自己翻译一下吧,或是touch一个空的也行。
5.1 安装Clamav
mail# cd /usr/ports/security/clamav
mail# make install clean
我的选择:
[X] MILTER Compile the milter interface
[X] CURL Support URL downloading
[X] LIBUNRAR Support for external Unrar library
要想clamav能自动的启动请在/etc/rc.conf中加入:
clamav_clamd_enable="YES"
clamav_freshclam_enable="YES"
重启服务器
测试杀毒
mail# clamscan -r -i /usr/local/www/data
----------- SCAN SUMMARY -----------
Known viruses: 41293
Engine version: 0.87.1
Scanned directories: 53
Scanned files: 602
Infected files: 0
Data scanned: 41.51 MB
Time: 18.294 sec (0 m 18 s)
升级病毒库
mail# freshclam
ClamAV update process started at Sun Dec 4 01:10:02 2005
main.cvd is up to date (version: 34, sigs: 39625, f-level: 5, builder: tkojm)
daily.cvd is up to date (version: 1200, sigs: 1669, f-level: 6, builder: tomek)
5.2 安装MailScanner
mail# cd /usr/ports/mail/mailscanner
mail# make install
第一次执行安装因此需执行make initial-config以建立基本配置文件
mail# make initial-config
mail# make clean
5.3 安装SpamAssassin
mail# cd /usr/ports/mail/p5-Mail-SpamAssassin
mail# make install clean
我的选择:
[X] AS_ROOT Run spamd as root (recommended)
[X] DOMAINKEYS DomainKeys support
[X] SSL Build with SSL support for spamd/spamc
[X] MYSQL Add MySQL support
[X] RAZOR Add Vipul's Razor support
[X] SPF_QUERY Add SPF query support
[X] RELAY_COUNTRY Relay country support
[X] TOOLS Install SpamAssassin tools
5.4修改Postfix设定档main.cf
mail# ee /usr/local/etc/postfix/main.cf
#header_checks = regexp:/usr/local/etc/postfix/header_checks //默认值
header_checks = regexp:/usr/local/etc/postfix/header_checks //把注释去掉
编辑/usr/local/etc/postfix/header_checks
mail# ee /usr/local/etc/postfix/header_checks
/^Received:/ HOLD //新加入,意思为新邮件全部放到/var/spool/postfix/hold目录中,等候mailscanner处理
5.5修改mailscanner.conf
mail# ee /usr/local/etc/MailScanner/MailScanner.conf
#Run As User = //默认值
Run As User = postfix //修改后
#Run As Group = //默认值
Run As Group = postfix //修改后
#Incoming Queue Dir = /var/spool/mqueue.in //默认值
Incoming Queue Dir = /var/spool/postfix/hold //修改后
#Outgoing Queue Dir = /var/spool/mqueue //默认值
Outgoing Queue Dir = /var/spool/postfix/incoming //修改后
#MTA = sendmail //默认值
MTA = postfix //修改后
#Virus Scanners = none //默认值
Virus Scanners = clamav //修改后
#Use SpamAssassin = no //默认值
Use SpamAssassin = yes //修改后
5.6新增MailScanner所要用到的资料夹
mail# mkdir /var/spool/MailScanner
mail# mkdir /var/spool/MailScanner/incoming
mail# mkdir /var/spool/MailScanner/quarantine
mail# chown postfix:postfix /var/spool/MailScanner/incoming
mail# chown postfix:postfix /var/spool/MailScanner/quarantine
mail# touch /usr/local/etc/MailScanner/rules/bounce.rules //新建一个空白文件,要不然会出错。
mail# chmod –R 777 /var/spool/postfix
mail#cp /usr/local/etc/MailScanner/mcp/10_example.cf.sample /usr/local/etc/MailScanner/mcp/10_example.cf
mail#cp /usr/local/etc/MailScanner/mcp/mcp.spam.assassin.prefs.conf.sample /usr/local/etc/MailScanner/mcp/mcp.spam.assassin.prefs.conf
注:这里的倒数一、二行实际操作中为一行
重新启动服务器
测试病毒过滤:
mail# telnet localhost 25
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail.toping.net ESMTP Postfix
mail from:webmaster@toping.net
250 Ok
rcpt to:webmaster@toping.net
250 Ok
data
354 End data with <CR><LF>.<CR><LF>
Subject:Virus test
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
.
250 Ok: queued as F0C221CC20 //出现F0C221CC20这行表示mailscanner运行成功了
quit
221 Bye
Connection closed by foreign host.
5.7把病毒提示信息改为中文
预设系统提示信息为英文,可以下载我修改的中文包。
[url]http://mail.toping.net/mailscanner/cn.rar[/url]
注:把下载下来的文件解压后放到/usr/local/share/MailScanner/reports/cn下面去
mail# ee /usr/local/etc/MailScanner/MailScanner.conf
#%report-dir% = /usr/local/share/MailScanner/reports/en //默认值(加载英文)
%report-dir% = /usr/local/share/MailScanner/reports/cn //修改后为读取中文
5.8.用MailScanner来监管进出邮件
mail# ee MailScanner.conf
Archive Mail = %rules-dir%/archive.rules
mail# ee archive.rules
方法一:互相备份, 以上这样并不会造成 loop
FromOrTo: [email]a@toping.net[/email] yes forward [email]b@toping.net[/email]
FromOrTo: [email]b@toping.net[/email] yes forward [email]a@toping.net[/email]
方法二:可以 forward 到复数信箱
FromOrTo: [email]a@toping.net[/email] yes forward [email]b@toping.net[/email] [email]c@toping.net[/email] [email]d@toping.net[/email]
方法三:同时备份到一个或多个档案及一个或多个信箱
FromOrTo: [email]a@toping.net[/email] yes forward /var/spool/MailScanner/archive/a_user_backup.mbx /var/spool/MailScanner/archive/a_user_backup.mbx [email]b@toping.net[/email] [email]scyz2@163.com[/email]
注:以上为一行,该档案要先建立且确定该档案拥有者与 MailScanner.conf 的 Run As User = XXXXXXX 相同
方法四:备份到数据夹及多个信箱或档案
FromOrTo: [email]a@toping.net[/email] yes forward /var/spool/MailScanner/archive/ [email]b@toping.net[/email] [email]scyz2@163.com[/email] /var/spool/MailScanner/archive/a_user_backup.mbx
注:以上为一行,权限同SAMPLE3;注意事项, 他会依日期再分数据夹, 日期数据夹内的文件名称 mail queue ID, 格式为 postfix mail queue 格式
2005年12月29日,写于北京家中
本文送给所有喜爱FreeBSD和Postfix的朋友和自己
PS:据hzqbbc说现在extmail系统已经成功在apache, lighttpd运行了,再加一个zeus,呵呵 以下为根据自己理解做的几个简单的流程,不知道是不是又会出现理解上的错误,呵呵,
感觉写这类配置文档的朋友比较多,但是文件、软件调用的流程比较少
知道具体的调用过程对以后的维护及系统的升级都是有帮助,希望那位比较熟悉基于postfix邮件系统搭建的朋友指点一下
=================================
收信
MTA->main.cf->mysql_virtual_alias_maps.cf->mysql_virtual_domains_maps.cf->mysql_virtual_mailbox_maps.cf->mysql_virtual_limit_maps.cf->mysql->MAIL BOX
发信
MTA->sasl2->smtpd.conf->Courier-authdaemon->authdaemonrc->authmysqlrc->mysql->如果认证通过则发信
POP3
POP3-Client->Courier-pop3d->Courier-authdaemon->authdaemonrc->authmysqlrc->mysql->如果认证通过则收信
WEB
WEB-Client->mysql->mail box 以做纪念 amavisd-new+clamav+SpamAssassin+CBL-
**以下为在原文档基础上增加病毒和垃圾邮件过滤功能,需去掉原mailscanner的配置。需已安装好Postfix+courier-imap+cyrus-sasl2+Extmail+Extman+Zeus_Web_Server并调试正常。因为反垃圾邮件系统的建立需根据用户的需求不断的调整,所以本文档给出的配置值只是一些建议值,具体可根据自己的情况进行相关调整。
作者:Grass_h
E-Mail:mrhuo at sohu dot com
QQ:31340564
----以下文档尽可能的保证描述及配置的正确性,因本人水平有限,会造成一些描述及对相关概念的理解上的错误,请各位见谅及指明我会立即做出相应修改,并在以后会逐步完善及增加新的模块。因为UNIX系统下的MAIL系统的搭建涉及到相关技术太多,无法一一做出说明,如需其他相关信息可参考其他资料或与我联系。
测试环境:VMware workstation,FreeBSD 5.4
软件:软件全部使用ports安装。
安装步骤:
一、安装clamav
#软件介绍:clamav是一款查病毒软件,目前可侦测超过40000种以上的病毒、蠕虫、木马,并且随时更新病毒库,而且这个防病毒软件是免费的。在本系统架构里,clamav主要负责病毒邮件的监控。
cd /usr/ports/security/clamav
make install clean
选择MILTER、CURL、LIBUNRAR
编辑/etc/rc.conf,加入
clamav_clamd_enable="YES" #以服务方式运行clamav
clamav_freshclam_enable="YES" #以服务方式运行病毒库更新程序
编辑/usr/local/etc/clamd.conf
查找User clamav,更改为User postfix。
chown -R postfix:postfix /var/run/clamav
二、安装amavisd-new
#软件介绍:amavisd-new本身也是一个简易的MTA,它是MTA和内容检查软件(如防病毒和垃圾邮件)之间的桥梁,它也可以和十多种杀毒软件和反垃圾系统配合来做相关的过滤。
cd /usr/ports/security/amavisd-new
make install clean
编辑/etc/rc.conf,加入
amavisd_enable="YES" #以服务方式运行amavisd
cd /usr/local/etc
cp amavisd.conf-sample amavisd.conf #覆盖原配置配置文件,.conf-sample配置起来比较有条理,把amavisd分为9部分来配置,同时提供的配置说明信息也要比原配置文件全
编辑amavisd.conf
$mydomain = 'example.com'; #更改为$mydomain = 'extmail.org';
$daemon_user = 'vscan'; #更改为$daemon_user = 'postfix';
$daemon_group = 'vscan'; #更改为$daemon_group = 'postfix';
$final_virus_destiny = D_BOUNCE; #更改为$final_virus_destiny = D_PASS; 这样用户收到病毒邮件时,邮件内容为amavisd的警告,并将原邮件以附件的形式发送给收信人
$final_spam_destiny = D_BOUNCE; #更改为$final_spam_destiny = D_PASS; 用户收到系统判定为垃圾邮件的信件时,会在主题上加入标记
$sa_tag_level_deflt = 2.0 #更改为$sa_tag_level_deflt = -999,以使所有的邮件都有SA的打分
$sa_tag2_level_deflt = 6.31 #更改为需要的值,超过这个分数的邮件会被在主题上加入标记,建议6~8
# ['ClamAV-clamd',
# \&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd"],
# qr/\bOK$/, qr/\bFOUND$/,
# qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
去掉以上四行前面的注释,以让amavisd-new调用clamav,在1674~1677行
#$sa_spam_subject_tag = '***SPAM*** ';
去掉注释,并更改“***SPAM***”为相应值,这是超过相应SA分值后amavisd在邮件主题上加入的标记,在1582行
编辑完以后保存,因为涉及到的配置实在太多,而且也直接影响到用户是否可以正常收到邮件,因为水平有限不敢做太多说明,以上只是最基本的设置,如果配置完以后有问题可查看maillog,在我的配置过程中发生最多的情况就是权限的问题
chown -R postfix:postfix /var/amavis
chown -R postfix:postfix /var/virusmails #这个目录是当收到的邮件被判定为病毒邮件时邮件存放的地址,如果按照上面的配置已经将病毒邮件都D_PASS了将不会再转存到此目录
根据$virus_admin = "virusalert\@$mydomain";建立相应的病毒邮件管理员帐号,当此域中用户收到病毒邮件时会发信息给此用户,或注释此行
三、配置SpamAssassin
#软件介绍:SpamAssassin是为邮件打分的软件,主要根据用户的设置,并通过内建的一套自学习系统(采用著名的贝式算法)打分。SA只对邮件打分,并不对邮件做任何操作,需要和amavisd等软件相结合以达到垃圾邮件过滤的功能。[url]http://www.yrex.com/spam/spamconfig.php[/url] 这个程序可以帮助用户生成配置文件。
在安装amavisd-new时同时也安装好了SA
编辑/etc/rc.conf,加入
spamd_enable="YES" #以服务方式运行SA
因为是和amavisd配合使用,可以直接在/var/amavisd/.spamassassin目录下新建user_prefs文件,以下为我根据其他DX的建议尤其是对中文邮件过滤做过相关优化的配置,内容:
use_bayes 1
auto_learn 1
auto_learn_threshold_nonspam -2
auto_learn_threshold_spam 15
##################################################
#Follow is diables some bad rules for chinese mail
#################################################
score SUBJ_FULL_OF_8BITS 0.0
score BASE64_ENC_TEXT 0.0
score BAYES_99 0.1
score BAYES_90 0.1
score BAYES_80 0.1
score BAYES_70 0.1
score BAYES_60 0.1
score FROM_ILLEGAL_CHARS 0.1
score HEAD_ILLEGAL_CHARS 0.1
score SUBJ_ILLEGAL_CHARS 0.1
score MIME_BASE64_TEXT 0.1
score FAKE_HELO_AOL 0.1
score NO_RDNS_DOTCOM_HELO 0.1
score CHINA_HEADER 0.1
四、配置postfix
编辑/usr/local/etc/postfix/main.cf
加入content_filter=smtp-amavis:[127.0.0.1]:10024
编辑/usr/local/etc/postfix/master.cf
加入如下内容:
smtp-amavis unix - - n - 2 smtp #这行前面没有空格
-o smtp_data_done_timeout=1200 #以-o开始的行需在行首加入空格
-o smtp_send_xforward_command=yes
-o disable_dns_lookups=yes
-o max_use=20
127.0.0.1:10025 inet n - n - - smtpd #这行行首没有空格
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_delay_reject=no
-o smtpd_client_restrictions=permit_mynetworks,reject
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks_style=host
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
-o smtpd_client_connection_count_limit=0
-o smtpd_client_connection_rate_limit=0
-o receive_override_options=no_header_body_checks,no_unknown_recipient_checks
五、配置postfix使用anti-spam.org.cn的实时黑名单服务“CBL-”
#说明:我们直接使用中国反垃圾邮件联盟提供的实时黑名单服务“CBL-”,[url]http://anti-spam.org.cn/services/rbl.php[/url]官方网站提供了更多的RBL相关信息。
编辑/usr/local/etc/postfix/main.cf
在smtpd_client_restrictions = 行下面加入
reject_rbl_client cblless.anti-spam.org.cn
六、测试
重新启动服务器
发送邮件做相关测试
SA测试代码:
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
#放在邮件正文即可
病毒测试代码:
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
#放在邮件正文即可
收邮件以查看amavisd是否工作正常,也可以先停掉amavisd后使用amavisd debug,以debug方式启动amavisd。
PS:相关信息需查看邮件原代码。 这个文章不好吗?怎么没有人顶呢? 老兄,文章是好
可惜我到现在还没有把Extmail搭建好呢 赞....写的不错,加精..... 谢谢大家支持。。。。 [quote][b]下面是引用grass_h于2006-02-01 14:20发表的:[/b]
谢谢大家支持。。。。[/quote]
记得多上好文,这就是感谢大家支持的最好方式 :lol 终于从老家回来了,呵呵
本来在一朋友那里把机器系统做完了,想回来以后远程做其他的工作
结果今天上午打电话说朋友家里被水泡了,损失惨重,被泡了N多台服务器,好在俺的机器没事,但是线路什么的可能还需要几天恢复,只能等了,等的着急。。。。。。
看来以后还是得自己找正经托管的地方呀,要不这两天基本于EXTMAIL的系统就可以上线了,55555 [quote][b]下面是引用grass_h于2006-02-09 23:24发表的:[/b]
终于从老家回来了,呵呵
本来在一朋友那里把机器系统做完了,想回来以后远程做其他的工作
结果今天上午打电话说朋友家里被水泡了,损失惨重,被泡了N多台服务器,好在俺的机器没事,但是线路什么的可能还需要几天恢复,只能等了,等的着急。。。。。。
看来以后还是得自己找正经托管的地方呀,要不这两天基本于EXTMAIL的系统就可以上线了,55555[/quote]
对啊,还是正规的idc保险些,出事也可以找赔偿。。 zeus是收费的?有没有免费的呢?
或者不用zeus搭建的邮件系统怎么做呢? [quote][b]下面是引用flb_2001于2006-02-12 20:01发表的:[/b]
zeus是收费的?有没有免费的呢?
或者不用zeus搭建的邮件系统怎么做呢?[/quote]
postfix在中国版里置顶的文章就有好几个这样子的,楼上的兄弟可以参考。 好东西啊.
我喜欢zeus
页:
[1]