1、Ubuntu 服务器管理员手记(二):快速安装配置邮件服务器(详解 Postfix + Dovecot) 分类: Linux 2011-10-14 15:17 112人阅读 评论(0) 收藏 举报 本文介绍 ubuntu 上邮件服务器的基本配置过程,面向个人和初级企业应用,能够保证信息安全但不涉及垃圾邮件和病毒的防范。 测试环境使用 Ubuntu 11.04,Postfix 2.8.2,Dovecot 1.2.15,其他版本可参照。 首先说明基本的背景知识。一个邮件服务器通常包括如下两个基本组件: 1. Mail Transfer Agent (MTA),用于向收件人的目标 ag
2、ent 发送邮件和接收来自其他 agent 的邮件。我们使用 Postfix 作为 MTA,它比 sendmail 更安全高效,且在 Ubuntu 平台上官方源提供更新。 2. Mail Delivery Agent (MDA),用于用户到服务器上访问自己的邮件。我们使用 Dovecot 作为 MDA,它在 Ubuntu 平台上也是官方源提供更新。 组件安装 在 root 权限下执行(或使用 sudo): 1. # apt-get install postfix 2. # apt-get install dovecot-common 3. # apt-get instal
3、l dovecot-imapd dovecot-pop3d Postfix 基本设置 编辑 /etc/postfix/main.cf 文件,做如下更改: 1. 为支持 TLS 安全连接,确保证书可用(通常默认安装已生成相应文件) 1. smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem 2. smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key 3. smtpd_use_tls=yes 使用安全连接可保证通过客户端发送邮件时不被截获和窃取
4、 2. 保证邮件服务器的域名存在于下述列表中 1. mydestination = , lab, localhost.localdomain, localhost 这样收件人为该域名的邮件才会被服务器留存而不是转给其他 MTA。 3. 侦听所有网口 1. inet_interfaces = all 4. 使用 Maildir 格式存放数据 1. home_mailbox = Maildir/ 这种格式的好处是邮件分开存放,MDT 访问时不必加锁。而且有些 MDT 仅支持该格式。 5. 配置邮箱和信件大小限制 1. mailbox_size_limit
5、 2000000000 2. message_size_limit = 20000000 这里设置邮箱大小为 2 GB,邮件大小为 20 MB。 最后,执行如下命令使上述配置生效: 1. $ sudo service postfix reload 验证 Postfix 和添加账户 在本机输入如下命令 1. $ telnet localhost smtp 可看到如下输出 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 lab ESMTP Postf
6、ix (Ubuntu) 进而输入邮件内容,可以发送给任意已有 linux 用户: 1. mail from: root@[YourDomain] 2. rcpt to: [UserName]@[YourDomain] 3. data 4. Subject: Hello 5. Hi, how are you? 6. Regards, 7. Admin. 8. . 9. quit 此时在该用户的 home 目录下,应当可以看到 Maildir 目录。进入 Maildir/new 下可以看到刚才的邮件(文本文件),用任意文本编辑器即可查
7、看其内容。如需其他邮件账户,只需正常添加 linux 用户即可。通常,我们可以把这些专用于邮件的用户的 home 目录集中到一起,命令行如下: 1. $ useradd -m -d /home/mail-users/[UserName] -g mail-users [UserName] 这里将邮件账户的 home 目录都放置在了 /home/mail-users 下。 dovecot 基本设置 编辑 /etc/dovecot/dovecot.conf 文件,做如下更改: 1. 使用 maildir 格式(与 postfix 格式对应) 1. mail_location =
8、maildir:~/Maildir 2. 侦听所有默认端口 1. listen = * 3. 设置安全的远程访问 为了使用户可以远程访问,必须开启基于用户名 / 密码的验证: 1. disable_plaintext_auth = no 但与此同时,由于用户名 / 密码都是明文,我们应该要求建立安全连接以防止信息泄露 1. ssl = required 2. ssl_cert_file = /etc/ssl/certs/dovecot.pem 3. ssl_key_file = /etc/ssl/private/dovecot.pem
9、 先前 Postfix 使用的是 TLS,这里的 SSL 与之类似。确保上述文件存在且可用,通常默认文件已经生成好。 最后,别忘使更改的配置生效: 1. $ sudo service dovecot reload 使用邮件客户端 至此,Postfix 和 Dovecot 最基本的配置已经完成,可以使用邮件客户端(如 Outlook)收发邮件,注意在设置账户时使用上述配置的加密类型,如下图: 【Trouble-shoot】如果服务器有防火墙,确保端口 25 和 993 开放。 增加 SMTP 验证(重要) 增加此项验证,可以防止恶意或垃圾邮件通过你的 MTA 进行传递
10、我们使用的验证机制是 SASL,采用和接收邮件账户相同的用户名 / 密码,匿名用户将被拒绝。 同样需要更改文件 /etc/postfix/main.cf,或者直接使用如下命令(两者等效): 1. sudo postconf -e 'smtpd_sasl_auth_enable = yes' 2. sudo postconf -e 'smtpd_sasl_type = dovecot' 3. sudo postconf -e 'smtpd_sasl_path = private/auth' 4. sudo postconf -e 'smtpd_sasl_security_
11、options = noanonymous' 5. sudo postconf -e 'broken_sasl_auth_clients = yes' 6. sudo postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination' 相应地,dovecot 需要开放验证接口,编辑文件 /etc/dovecot/dovecot.conf,在 auth default 节中添加如下行,形如: 1. auth de
12、fault { 2. ...... 3. socket listen { 4. client { 5. path = /var/spool/postfix/private/auth 6. mode = 0660 7. user = postfix 8. group = postfix 9. } 10. } 11. ...... 12. } 为了保证用户名 / 密码安全,建议发送邮件服务器也强制使用安全连接:sudo postconf -e 'smtpd_tls_auth_only = yes' 最后别忘使配置生效: $ sudo service postfix reload $ sudo service dovecot reload 此时再配置邮件客户端时,需要勾选 SMTP 认证,如下图(Outlook 2010): 至此,所有设置已经完成,使用邮件客户端收发应该正常,而且可以保证安全性。






