- 论坛徽章:
- 0
|
FreeBSD7.1+postfix+sasl2+mysql+maildrop+ExtMan+Mailman+ClamAv完全安装
网站:ppabc.cn
QQ: 5612035
邮箱:ppabc@qq.com
FreeBSD7.1和FreeBSD7.0安装并没有区别,我测试是可以安装的,只是FreeBSD7.0发帖过于匆忙,不够详细,FreeBSD7.1多加了需要注意的地方,和一些解决问题方法!
本文省略部分请看
FreeBSD7.0+postfix+sasl2+mysql+maildrop+ExtMan+Mailman+ClamAv完全安装
http://bbs3.chinaunix.net/thread-1119098-1-1.html
内网邮件VMware测试系统1.0发布 (基于FreeBSD7.0)
http://bbs.chinaunix.net/viewthread.php?tid=1158670
在本例中,机器名:www.ppabc.cn
域名:ppabc.cn
默认网关:192.168.1.1
IP地址:192.168.1.8
参考文章:
1. http://www.extmail.org/docs/extmail_solution_freebsd/
2. http://www.yiyou.org/docs/freebsd_postfix_03/
整个邮件解决方案由如下软件组成:
功能模块 内容 备注
操作系统(OS) FreeBSD FreeBSD是一个优秀的unix操作系统,基于宽松的BSD协议
邮件传输代理(MTA) Postfix 使用postfix-2.5.6,1,ports中的postfix已经是最新的2.5版
数据库/目录服务 mysql-server-5.0.77 可选MySQL或其他版本
邮件投递代理(MDA) maildrop-2.0.4 支持过滤和强大功能
Web帐户管理后台 extman-0.2.5 支持无限域名、无限用户
POP3 服务器 Courier-IMAP -4.4.1, 支持pop3/pop3s/imap/imaps,功能强大,可根据需要选择
WebMail 系统 ExtMail-1.0.5 支持多语言、全部模板化,功能基本齐全
防病毒软件(Anti-Virus) ClamAV -0.94.2 最热门的开源杀毒软件
内容过滤器 Amavisd-new-2.6.2_2 Content-Filter软件,支持与clamav/sa的挂接
内容级别的反垃圾邮件工具 SpamAssassin 著名的SA,可以支持大量规则,但速度较慢
SMTP认证库 Cyrus SASL -2.1.22_2 标准的SASL实现库,可以支持Courier authlib
其他数据认证库 Courier Authlib -0.62.1 authlib是maildrop, courier-imap等服务的关键部件
日志分析及显示 mailgraph_ext 在ExtMan中已经包含了
Web 服务器 Apache -2.2.11 最新版的apache服务器,默认支持ssl模块
maillist软件 Mailman-2.1.11 功能强大的邮件列表软件,支持基于web的管理
操作系统安装
操作系统迷你安装
安装时的注意事项
1,磁盘分区
由于是邮件系统,相关的日志和queue都会保存在var分区内,因此var分区要有足够的空间。以一块硬盘73G/内存3G的服务器为例,可做如下分区:
/ 512m
swap 4096m
/var 5g
/tmp 512m
/usr 8g(尽量保证有10G左右)
/home 50g(剩下所有的空间)
2,软件包的选择
我们的邮件系统是要对外服务的,所以尽可能少的选择软件包,安装时建议选择Minimal,然后进入Custom选择doc,info,man,src即可。
配置
1,编辑/etc/rc.conf确保有如下内容:
- sshd_enable="YES"
- named_enable="YES"
- sendmail_enable="NONE"
复制代码
编辑/etc/resolv.conf确保第一条nameserver记录是127.0.0.1,这样本地DNS缓存才有效,类似如下:
- domain ppabc.cn
- nameserver 127.0.0.1
- nameserver 61.153.177.199
复制代码
然后执行如下命令:
/etc/rc.d/named start
2,根据硬件的配置重新编译内核 (省略)
更新ports (省略)
整个系统的安装全过程都要求以root身份执行。并能够访问Internet。
安装前的准备
增加一个存储邮件的帐号和组(vmail)
执行如下命令
- pw group add vmail -g 1000
- pw user add vmail -u 1000 -g 1000 -s /sbin/nologin -d /dev/null
复制代码
给test用户创建路径
需要一个测试帐号test@ppabc.cn,需要准备该账号的路径。
- mkdir -p /home/domains/ppabc.cn/test/Maildir/new
- mkdir -p /home/domains/ppabc.cn/test/Maildir/cur
- mkdir -p /home/domains/ppabc.cn/test/Maildir/tmp
- chown -R vmail:vmail /home/domains/
- chmod -R 700 /home/domains/
复制代码
ExtMan的安装
由于在安装过程中要使用ExtMan里面带的文件,因此在此先安装ExtMan。安装时根据个人需要选择MySQL或者mysql支持。
cd /usr/ports/mail/extman/ && make install clean
安装时选择mysql
安装mysql
- cd /usr/ports/databases/mysql50-server/ && make WITH_CHARSET=gbk WITH_XCHARSET=all WITH_PROC_SCOPE_PTH=yes BUILD_OPTIMIZED=yes BUILD_STATIC=yes SKIP_DNS_CHECK=yes WITHOUT_INNODB=yes install clean
复制代码
编辑/etc/rc.conf
执行ee /etc/rc.conf
加入mysql_enable="YES"
复制 MySQL 配置文件
- cp /usr/local/share/mysql/my-huge.cnf /usr/local/etc/my.cnf
复制代码
启动 mysql-server
- /usr/local/bin/mysql_install_db --user=mysql
- cp /usr/local/etc/rc.d/mysql-server /usr/local/etc/rc.d/mysql.sh
- /usr/local/etc/rc.d/mysql-server start
复制代码
修改root用户的密码
/usr/local/bin/mysqladmin -u root -p password
Enter password:
安装 openssl
cd /usr/ports/security/openssl/ && make install clean
安装配置文件
cp /usr/local/openssl/openssl.cnf.sample /usr/local/openssl/openssl.cnf
安装配置courier-imap POP3/IMAP
Courier-IMAP是一个提供POP3、IMAP服务的程序,能够很方便的配置使其支持加密协议POP3s、IMAPs。并良好的支持Maildir。
Courier-imap的安装
安装时选择(如果你使用MySQL认证,则选择AUTH_MYSQL):
OPENSSL
TRASHQUOTA
AUTH_MYSQL
执行cd /usr/ports/mail/courier-imap/ && make install clean
安装时选择 TRASHQUOTA AUTH_MYSQL
Authlib的配置
执行mv /usr/local/etc/authlib/authdaemonrc /usr/local/etc/authlib/authdaemonrc.bak
编辑/usr/local/etc/authlib/authdaemonrc文件,内容类似如下:
-
- authmodulelist="authmysql"
- authmodulelistorig="authmysql"
- version="authdaemond.mysql"
- daemons=5
- authdaemonvar=/var/run/authdaemond
- subsystem=mail
- DEBUG_LOGIN=0
- DEFAULTOPTIONS="wbnodsn=1"
- LOGGEROPTS=""
复制代码
增加/var/run/authdaemond的执行权限,在FreeBSD系统下,其他用户默认没有执行权限
执行chmod +x /var/run/authdaemond
执行mv /usr/local/etc/authlib/authmysqlrc /usr/local/etc/authlib/authmysqlrc.bak
编辑/usr/local/etc/authlib/authmysqlrc文件,内容类似如下:
- MYSQL_SERVER localhost
- MYSQL_USERNAME extmail
- MYSQL_PASSWORD extmail
- MYSQL_PORT 0
- MYSQL_OPT 0
- MYSQL_DATABASE extmail
- MYSQL_SELECT_CLAUSE SELECT username,password,"",uidnumber,gidnumber,\
- CONCAT('/home/domains/',homedir), \
- CONCAT('/home/domains/',maildir), \
- quota, \
- name \
- FROM mailbox \
- WHERE username = '$(local_part)@$(domain)'
复制代码
配置支持POP3s
拷贝一份配置文件
cp /usr/local/etc/courier-imap/pop3d.cnf.dist /usr/local/etc/courier-imap/pop3d.cnf
编辑/usr/local/etc/courier-imap/pop3d.cnf文件,类似如下:
-
- RANDFILE = /usr/local/share/courier-imap/pop3d.rand
- [ req ]
- default_bits = 1024
- encrypt_key = yes
- distinguished_name = req_dn
- x509_extensions = cert_type
- prompt = no
- [ req_dn ]
- C=CN
- ST=BJ
- L=Bei Jing
- O=Extmail
- OU=extmail
- CN=ppabc.cn
- emailAddress=ppabc@qq.com
- [ cert_type ]
- nsCertType = server
复制代码
执行如下命令产生供POP3s使用的证书
/usr/local/sbin/mkpop3dcert
配置支持IMAPs
拷贝一份配置文件
cp /usr/local/etc/courier-imap/imapd.cnf.dist /usr/local/etc/courier-imap/imapd.cnf
编辑/usr/local/etc/courier-imap/imapd.cnf文件,类似如下:
-
- RANDFILE = /usr/local/share/courier-imap/imapd.rand
- [ req ]
- default_bits = 1024
- encrypt_key = yes
- distinguished_name = req_dn
- x509_extensions = cert_type
- prompt = no
- [ req_dn ]
- C=CN
- ST=BJ
- L=Bei Jing
- O=Extmail
- OU=extmail
- CN=ppabc.cn
- emailAddress=ppabc@qq.com
- [ cert_type ]
- nsCertType = server
复制代码
执行如下命令产生供IMAP使用的证书
/usr/local/sbin/mkimapdcert
配置自动启动
编辑/etc/rc.conf文件,添加如下行:
- courier_authdaemond_enable="YES"
- courier_imap_pop3d_enable="YES"
- courier_imap_imapd_enable="YES"
- courier_imap_pop3d_ssl_enable="YES"
- courier_imap_imapd_ssl_enable="YES"
复制代码
这5行的作用分别是在开机时:启动authdaemond,启动pop3d,启动imapd,启动pop3d-ssl,启动imapd-ssl。也可以使用命令行来控制这些进程的启动或者停止。
/usr/local/etc/rc.d/courier-authdaemond start/stop
/usr/local/etc/rc.d/courier-imap-pop3d start/stop
/usr/local/etc/rc.d/courier-imap-imapd start/stop
/usr/local/etc/rc.d/courier-imap-pop3d-ssl start/stop
/usr/local/etc/rc.d/courier-imap-imapd-ssl start/stop
Postfix的安装和配置-MTA
MTA在邮件系统中处于非常重要的位置,他负责接收其他人给你发的信,并且负责把你的信转发到目的地。选择一个靠谱的MTA对建立邮件来说意义重大,因此我们使用Postfix!! 。另外MTA部分在邮件系统中的开发难度是最高的,起到的作用也是最大的,因此我们也常拿MTA的名字来称呼自己的邮件系统,比如:我常说我的邮件系统是Postfix。
安装postfix
安装时选择(如果你使用MySQL验证,可以选择MYSQL):
PCRE
SASL2
TLS
MYSQL
VDA
TEST
cd /usr/ports/mail/postfix/ && make install clean
安装时选择PCRE SASL2 TLS MYSQL VDA TEST
一会有遇到要选择Y/N 先y 然后n 在这里当安装到SASL2不要选择选择 MYSQL 其他默认
否则会有Postfix:Sql_select option missing错误出现
Postfix:Sql_select option missing问题解决及原因请看http://ppabc.cn/?p=585
配置postfix
编辑/etc/rc.conf,增加如下一行
postfix_enable="YES"
编辑/etc/aliases,确保有如下一行
postfix: root
替换掉系统带的sendmail程序
mv /usr/sbin/sendmail /usr/sbin/sendmail.bak
cp /usr/local/sbin/sendmail /usr/sbin/sendmail
编辑/etc/periodic.conf,加入如下内容,禁掉sendmail的自动维护。
- daily_clean_hoststat_enable="NO"
- daily_status_mail_rejects_enable="NO"
- daily_status_include_submit_mailq="NO"
- daily_submit_queuerun="NO"
复制代码
执行如下命令
- /usr/local/sbin/postalias /etc/aliases
- chown postfix:postfix /etc/opiekeys
- /usr/local/sbin/postconf -e 'mydomain = ppabc.cn'
- /usr/local/sbin/postconf -e 'myhostname = mail.ppabc.cn'
- /usr/local/sbin/postconf -e 'myorigin = $mydomain'
- /usr/local/sbin/postconf -e 'virtual_mailbox_base = /home/domains'
- /usr/local/sbin/postconf -e 'virtual_uid_maps=static:1000'
- /usr/local/sbin/postconf -e 'virtual_gid_maps=static:1000'
复制代码
执行如下命令对查询表进行配置
- cp /usr/local/www/extman/docs/mysql_virtual_* /usr/local/etc/postfix/
- /usr/local/sbin/postconf -e 'virtual_alias_maps = $alias_maps, mysql:/usr/local/etc/postfix/mysql_virtual_alias_maps.cf'
- /usr/local/sbin/postconf -e 'virtual_mailbox_maps = mysql:/usr/local/etc/postfix/mysql_virtual_mailbox_maps.cf'
- /usr/local/sbin/postconf -e 'virtual_mailbox_domains = mysql:/usr/local/etc/postfix/mysql_virtual_domains_maps.cf'
复制代码
SMTP认证设置
编辑/usr/local/lib/sasl2/smtpd.conf
-
- pwcheck_method:authdaemond
- log_level:3
- mech_list:PLAIN LOGIN
- authdaemond_path:/var/run/authdaemond/socket
复制代码
对postfix做如下配置使支持smtp认证
- /usr/local/sbin/postconf -e 'smtpd_sasl_auth_enable=yes'
- /usr/local/sbin/postconf -e 'broken_sasl_auth_clients = yes'
- /usr/local/sbin/postconf -e 'smtpd_sasl_local_domain = $myhostname'
复制代码
postfix反垃圾设置
此处的反垃圾邮件只是在MTA级的一些预防垃圾邮件的设置,可根据实际情况以及自己的需要进行调整。
- /usr/local/sbin/postconf -e 'smtpd_helo_required=yes'
- /usr/local/sbin/postconf -e 'smtpd_delay_reject=yes'
- /usr/local/sbin/postconf -e 'disable_vrfy_command=yes'
- /usr/local/sbin/postconf -e 'smtpd_client_restrictions = check_client_access hash:/usr/local/etc/postfix/client_access'
- /usr/local/sbin/postconf -e 'smtpd_helo_restrictions=reject_invalid_hostname,check_helo_access hash:/usr/local/etc/postfix/helo_access'
- /usr/local/sbin/postconf -e 'smtpd_sender_restrictions = reject_non_fqdn_sender, reject_unknown_sender_domain, check_sender_access hash:/usr/local/etc/postfix/sender_access'
- /usr/local/sbin/postconf -e 'smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject_non_fqdn_recipient, reject_unknown_recipient_domain'
- /usr/local/sbin/postconf -e 'smtpd_data_restrictions=reject_unauth_pipelining'
- /usr/local/sbin/postconf -e 'header_checks = regexp:/usr/local/etc/postfix/head_checks'
- /usr/local/sbin/postconf -e 'body_checks = regexp:/usr/local/etc/postfix/body_checks'
- touch /usr/local/etc/postfix/head_checks
- touch /usr/local/etc/postfix/body_checks
- touch /usr/local/etc/postfix/client_access
- touch /usr/local/etc/postfix/sender_access
- touch /usr/local/etc/postfix/helo_access
- /usr/local/sbin/postmap /usr/local/etc/postfix/head_checks
- /usr/local/sbin/postmap /usr/local/etc/postfix/body_checks
- /usr/local/sbin/postmap /usr/local/etc/postfix/client_access
- /usr/local/sbin/postmap /usr/local/etc/postfix/sender_access
- /usr/local/sbin/postmap /usr/local/etc/postfix/helo_access
复制代码
TLS设置
生成证书,在这里默认私钥的访问密码为123qwe98,请根据自己的情况决定,以后可能会用得到。
-
- mkdir -p /usr/local/etc/postfix/certs/CA
- cd /usr/local/etc/postfix/certs/CA
- mkdir certs crl newcerts private
- echo "01" > serial
- touch index.txt
- cp /usr/local/openssl/openssl.cnf .
复制代码
这个地方要注意上面这句后面有个点,也可以执行cp /usr/local/openssl/openssl.cnf /usr/local/etc/postfix/certs/CA/
编辑openssl.cnf 其中 dir = /usr/local/etc/postfix/certs/CA 这个地方一定要看,很多朋友证书不能生成就是因为这个地方
编辑openssl.cnf,确认dir参数的值是/usr/local/etc/postfix/certs/CA。然后继续执行如下命令,并根据情况输入信息。输入信息类似如下:
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:BJ
Locality Name (eg, city) []:Bei Jing
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Extmail
Organizational Unit Name (eg, section) []:extmail
Common Name (eg, YOUR name) []:ppabc.cn
Email Address []:ppabc@qq.com
这里的信息是 POP3s 证书 IMAP 证书 下面输入信息要一致
命令如下:
openssl req -new -x509 -keyout private/cakey.pem -out cacert.pem -days 3650 -config openssl.cnf
按照前面输入的信息输入
openssl req -nodes -new -x509 -keyout mykey.pem -out myreq.pem -days 3650 -config openssl.cnf
按照前面输入的信息输入
- openssl x509 -x509toreq -in myreq.pem -signkey mykey.pem -out tmp.pem
- openssl ca -config openssl.cnf -policy policy_anything -out mycert.pem -infiles tmp.pem
- rm tmp.pem
- cp cacert.pem /usr/local/etc/postfix/certs/
- cp mycert.pem /usr/local/etc/postfix/certs/
- cp mykey.pem /usr/local/etc/postfix/certs/
- cd /usr/local/etc/postfix/certs/
- chown root:wheel cacert.pem mycert.pem
- chown root:postfix mykey.pem
- chmod 755 cacert.pem
- chmod 644 mycert.pem
- chmod 440 mykey.pem
- ln -s cacert.pem `openssl x509 -noout -hash < cacert.pem `.0
复制代码
配置postfix支持TLS
-
- /usr/local/sbin/postconf -e 'smtpd_use_tls=yes'
- /usr/local/sbin/postconf -e 'smtpd_tls_auth_only=no'
- /usr/local/sbin/postconf -e 'smtp_tls_CAfile = /usr/local/etc/postfix/certs/cacert.pem'
- /usr/local/sbin/postconf -e 'smtp_tls_cert_file = /usr/local/etc/postfix/certs/mycert.pem'
- /usr/local/sbin/postconf -e 'smtp_tls_key_file = /usr/local/etc/postfix/certs/mykey.pem'
- /usr/local/sbin/postconf -e 'smtpd_tls_CAfile=/usr/local/etc/postfix/certs/cacert.pem'
- /usr/local/sbin/postconf -e 'smtpd_tls_cert_file=/usr/local/etc/postfix/certs/mycert.pem'
- /usr/local/sbin/postconf -e 'smtpd_tls_key_file=/usr/local/etc/postfix/certs/mykey.pem'
- /usr/local/sbin/postconf -e 'smtpd_tls_received_header=yes'
- /usr/local/sbin/postconf -e 'smtpd_tls_loglevel=3'
- /usr/local/sbin/postconf -e 'smtpd_starttls_timeout=60s'
- /usr/local/etc/postfix/master.cf
复制代码
配置master.cf,添加如下信息
-
- smtps inet n - n - - smtpd
- -o smtpd_tls_wrappermode=yes
- -o smtpd_sasl_auth_enable=yes
- -o smtpd_client_restrictions=permit_sasl_authenticated,reject
复制代码
Maildrop的安装和配置-MDA
MDA-邮件分发代理。他从MTA那儿拿到信,然后存入您的邮箱里面。MDA在投递邮件到您的目录里面时,会先对邮件进行一些过滤,过滤规则会根据您的配置文件来进行。1,进行全局过滤设置,读取/etc/maildroprc(Linux)或者/usr/local/etc/maildroprc(BSD),根据配置该配置文件执行相应的操作,影响到所有用户;2,根据每个用户的配置进行过滤,读取$HOME/.mailfilter,根据每个用户的设置进行相应的操作,仅影响单个用户。基于这样的特点,WEBMAIL通过编辑$HOME/.mailfilter可以实现一些特色化的东西,比如:黑白名单、SPAM自动转入垃圾邮件夹、SMS提醒等等。 |
|