qmail 在那台 Sun E450 上的免费日子终于结束了。 迎来了自己的 RHEL5 跑在
Intel(R) Core(TM)2 Duo CPU E8300 @ 2.83GHz
MemTotal: 4002428 kB
而新的邮件系统添加的 SSL/TLS 功能,也让系统有了更亮丽的特色。
1. 检查相关软件是否已经安装:
dovecot-1.0-1.2.rc15.el5
sendmail-8.13.8-2.el5
sendmail-cf-8.13.8-2.el5
spamassassin-3.1.7-4.el5
2.配置 dovecot
我用的是简单的 /etc/shadow 文件的认证
[root@freelamp certs]# dovecot -n
# /etc/dovecot.conf
protocols: pop3s
login_dir: /var/run/dovecot/login
login_executable: /usr/libexec/dovecot/pop3-login
login_greeting: FreeLAMP.com Day Day Up
mail_location: mbox:~/mail:INBOX=/var/mail/%u
mail_executable: /usr/libexec/dovecot/pop3
mail_plugin_dir: /usr/lib/dovecot/pop3
auth default:
mechanisms: plain login
cache_size: 1024
passdb:
driver: shadow
userdb:
driver: passwd
这里只用了 pop3s 协议,也就是 995 端口。
3. 配置 dovecot 证书
vi /etc/pki/dovecot/dovecot-openssl.cnf
mv /etc/pki/dovecot/private/dovecot.pem /etc/pki/dovecot/private/dovecot.pem.orig
mv /etc/pki/dovecot/certs/dovecot.pem /etc/pki/dovecot/certs/dovecot.pem.orig
生成新的自己 domain 的证书
/usr/share/doc/dovecot-1.0/examples/mkcert.sh
mv /etc/pki/dovecot/private/dovecot.pem /etc/pki/dovecot/private/mydomain.pem
mv /etc/pki/dovecot/certs/dovecot.pem /etc/pki/dovecot/certs/mydomain.pem
主要修改的地方是:
ssl_disable=no
ssl_cert_file=/etc/pki/dovecot/certs/mydomain.pem
ssl_key_file=/etc/pki/dovecot/private/mydomain.pem
ssl_parameters_regenerate=168
verbose_ssl=no
这样,POP3S 收取邮件时,就可以在 /etc/log/maillog 里看到这样的日志:
Oct 8 22:22:40 freelamp dovecot: pop3-login: Login: user=
至此,POP3 的加密完成。下面介绍 SMTP 的加密。
1. 生成 CA 证书
cd /etc/pki/tls/misc
./CA -newca
根据提示输入,Common Name 输入自己的邮件服务器主机名字,mail.yourdomain.com
会生成两个文件:
/etc/pki/CA/cacert.pem (CA证书,你可以和其他通信的机构交换这个证书)
/etc/pki/CA/private/cakey.pem(密码保护的私密证书,用来签名和撤销证书)
2.生成私密和证书签名请求(CSR)
./CA -newreq
在 /etc/pki/tls/misc 目录下生成两个文件:
/etc/pki/tls/misc/newreq.pem
/etc/pki/tls/misc/newkey.pem
3.签名:
./CA -sign
这一步生成 /etc/pki/CA/newcerts/
4.拷贝证书到 sendmail 的证书目录下,并修改文件权限
mkdir /etc/mail/certs
cp /etc/pki/CA/cacert.pem /etc/mail/certs
cp /etc/pki/tls/misc/newcert.pem /etc/mail/certs/mycert.pem
openssl pkcs8 -in newkey.pem -topk8 -nocrypt -out mykey.pem (解决 SSL_CTX_use_PrivateKey_file Error 问题)
cp /etc/pki/tls/misc/mykey.pem /etc/mail/certs
chmod -R 700 /etc/mail/certs
chown -R root:sys /etc/mail/certs
5.配置 sendmail,并重启
修改 /etc/mail/sendmail.mc
define(`confCACERT_PATH’, `/etc/mail/certs’)dnl
define(`confCACERT’, `/etc/mail/certs/cacert.pem’)dnl
define(`confSERVER_CERT’, `/etc/mail/certs/mycert.pem’)dnl
define(`confSERVER_KEY’, `/etc/mail/certs/mykey.pem’)dnl
define(`confCLIENT_CERT’, `/etc/mail/certs/mycert.pem’)dnl
define(`confCLIENT_KEY’, `/etc/mail/certs/mykey.pem’)dnl
测试 Sendmail 是否编译支持 STARTTLS:
$ sendmail -bt -d0.8 < /dev/null
Compiled with: DNSMAP HESIOD HES_GETMAILHOST LDAPMAP LOG MAP_REGEX
MATCHGECOS MILTER MIME7TO8 MIME8TO7 NAMED_BIND NETINET NETINET6
NETUNIX NEWDB NIS PIPELINING SASLv2 SCANF STARTTLS TCPWRAPPERS
USERDB USE_LDAP_INIT
m4 /etc/mail/sendmail.mc >/etc/mail/sendmail.cf
service sendmail restart
6.从客户端检查:
telnet mail.freelamp.com 25
EHLO your_hostname
应该看到:
250-STARTTLS
至此, SMTP 的加密功能完成,下面结合 Spamassassin 的反垃圾邮件功能。
spamassassin 结合 procmail 实现 Anti Spamming 机制:
vi /etc/sysconfig/spamassassin
SPAMDOPTIONS=”-d -c -l -m5 -H”
建立 /etc/procmailrc 文件:
[root@freelamp mail]# cat /etc/procmailrc
# /etc/procmailrc
LOGABSTRACT=all
LOGFILE=/var/spool/mail/procmail.log
VERBOSE=off
# Send all mail through Spamassassin
:0 fw
* < 256000
| /usr/bin/spamc -u mail
:0:
* ^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*
/var/mail/spam10
如果 SA 分数大于10 的话,邮件就被移到 /var/mail/spam10 文件里。
而 procmail.log 里面会看到下面的日志:
From CharleyhaugenKoch@wftv.com Sat Oct 18 00:46:18 2008
Subject: [SPAM] free slot machines to play
Folder: /var/mail/spam10 2662
用 statmail /var/spool/mail/procmail.log 可以查看邮件过滤的统计。
其他需要注意的一些小事情:
其他,每次修改配置,需要重启服务,例如:
service spamassassin restart
可以修改 /etc/mail/spamassassin/local.cf 来添加白名单,黑名单等等。
sendmail 对多个 domain 的支持:
把需要转发的域名加入 /etc/mail/local-host-names
修改域名,用户映射表:/etc/mail/virtusertable
makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable
对 alias 的修改: /etc/aliases,然后运行 newaliases 。
ThunderBird 邮件客户端使用加密的 SMTP/POP3 的设置:
POP3S: 账户设置->服务器设置->安全设置->SSL,端口会自动变成 995 。
SMTPS: 外发服务器(SMTP)->也是选择 SSL,端口自动变成 465。
安装 Remember Mismatched Domains 1.4.6 插件 (https://addons.mozilla.org/en-US/thunderbird/addon/2131)
以解决每次都遇到 Remember Mismatched Domains Extension – Mozilla Add-ons
thunderbird security error domain name mismatch
iptables 的设置文件为: /etc/sysconfig/iptables ,修改后 servie iptables restart
SA 默认的分数清单:
http://spamassassin.apache.org/tests_3_2_x.html
October 20th, 2008
albertxu
Posted in Uncategorized
Tags: 