Ubuntu服务器管理员手记(二):快速安装配置邮件服务器(详解Postfix+Dovecot)分类:Linux2011-10-1415:17112人阅读评论(0)收藏举报本文介绍ubuntu上邮件服务器的基本配置过程,面向个人和初级企业应用,能够保证信息安全但不涉及垃圾邮件和病毒的防范。测试环境使用Ubuntu11.04,Postfix2.8.2,Dovecot1.2.15,其他版本可参照。首先说明基本的背景知识。一个邮件服务器通常包括如下两个基本组件:1.MailTransferAgent(MTA),用于向收件人的目标agent发送邮件和接收来自其他agent的邮件。我们使用Postfix作为MTA,它比sendmail更安全高效,且在Ubuntu平台上官方源提供更新。2.MailDeliveryAgent(MDA),用于用户到服务器上访问自己的邮件。我们使用Dovecot作为MDA,它在Ubuntu平台上也是官方源提供更新。组件安装在root权限下执行(或使用sudo):1.#apt-getinstallpostfix2.#apt-getinstalldovecot-common3.#apt-getinstalldovecot-imapddovecot-pop3d#apt-getinstallpostfix#apt-getinstalldovecot-commo#apt-getinstalldovecot-imapdPostfix基本设置编辑/etc/postfix/main.cf文件,做如下更改:1.为支持TLS安全连接,确保证书可用(通常默认安装已生成相应文件)1.smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem2.smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key3.smtpd_use_tls=yessmtpd_tls_cert_file=/etc/ssl/cesmtpd_tls_key_file=/etc/ssl/prismtpd_use_tls=yes使用安全连接可保证通过客户端发送邮件时不被截获和窃取。2.保证邮件服务器的域名存在于下述列表中1.mydestination=daolicloud.com,lab,localhost.localdomain,localhostmydestination=daolicloud.com,lab,localhost.localdomain,localhost这样收件人为该域名的邮件才会被服务器留存而不是转给其他MTA。3.侦听所有网口1.inet_interfaces=allinet_interfaces=all4.使用Maildir格式存放数据1.home_mailbox=Maildir/home_mailbox=Maildir/这种格式的好处是邮件分开存放,MDT访问时不必加锁。而且有些MDT仅支持该格式。5.配置邮箱和信件大小限制1.mailbox_size_limit=20000000002.message_size_limit=20000000mailbox_size_limit=2000000000message_size_limit=20000000这里设置邮箱大小为2GB,邮件大小为20MB。最后,执行如下命令使上述配置生效:1.$sudoservicepostfixreload$sudoservicepostfixreload验证Postfix和添加账户在本机输入如下命令1.$telnetlocalhostsmtp$telnetlocalhostsmtp可看到如下输出Trying127.0.0.1...Connectedtolocalhost.Escapecharacteris'^]'.220labESMTPPostfix(Ubuntu)进而输入邮件内容,可以发送给任意已有linux用户:1.mailfrom:root@[YourDomain]2.rcptto:[UserName]@[YourDomain]3.data4.Subject:Hello5.Hi,howareyou?6.Regards,7.Admin.8..9.quitmailfrom:root@[YourDomain]rcptto:[UserName]@[YourDomaindataSubject:HelloHi,howareyou?Regards,此时在该用户的home目录下,应当可以看到Maildir目录。进入Maildir/new下可以看到刚才的邮件(文本文件),用任意文本编辑器即可查看其内容。如需其他邮件账户,只需正常添加linux用户即可。通常,我们可以把这些专用于邮件的用户的home目录集中到一起,命令行如下:1.$useradd-m-d/home/mail-users/[UserName]-gmail-users[UserName]$useradd-m-d/home/mail-user这里将邮件账户的home目录都放置在了/home/mail-users下。dovecot基本设置编辑/etc/dovecot/dovecot.conf文件,做如下更改:1.使用maildir格式(与postfix格式对应)1.mail_location=maildir:~/Maildirmail_location=maildir:~/Maild2.侦听所有默认端口1.listen=*listen=*3.设置安全的远程访问为了使用户可以远程访问,必须开启基于用户名/密码的验证:1.disable_plaintext_auth=nodisable_plaintext_auth=no但与此同时,由于用户名/密码都是明文,我们应该要求建立安全连接以防止信息泄露1.ssl=required2.ssl_cert_file=/etc/ssl/certs/dovecot.pem3.ssl_key_file=/etc/ssl/private/dovecot.pemssl=requiredssl_cert_file=/etc/ssl/certs/ssl_key_file=/etc/ssl/private先前Postfix使用的是TLS,这里的SSL与之类似。确保上述文件存在且可用,通常默认文件已经生成好。最后,别忘使更改的配置生效:1.$sudoservicedovecotreload$sudoservicedovecotreload使用邮件客户端至此,Postfix和Dovecot最基本的配置已经完成,可以使用邮件客户端(如Outlook)收发邮件,注意在设置账户时使用上述配置的加密类型,如下图:【Trouble-shoot】如果服务器有防火墙,确保端口25和993开放。增加SMTP验证(重要)增加此项验证,可以防止恶意或垃圾邮件通过你的MTA进行传递。我们使用的验证机制是SASL,采用和接收邮件账户相同的用户名/密码,匿名用户将被拒绝。同样需要更改文件/etc/postfix/main.cf,或者直接使用如下命令(两者等效):1.sudopostconf-e'smtpd_sasl_auth_enable=yes'2.sudopostconf-e'smtpd_sasl_type=dovecot'3.sudopostconf-e'smtpd_sasl_path=private/auth'4.sudopostconf-e'smtpd_sasl_security_options=noanonymous'5.sudopostconf-e'broken_sasl_auth_clients=yes'6.sudopostconf-e'smtpd_recipient_restrictions=permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'sudopostconf-e'smtpd_sasl_ausudopostconf-e'smtpd_sasl_tysudopostconf-e'smtpd_sasl_pasudopostconf-e'smtpd_sasl_sesudopostconf-e'broken_sasl_asudopostconf-e'smtpd_recipie相应地,dovecot需要开放验证接口,编辑文件/etc/dovecot/dovecot.conf,在authdefault节中添加如下行,形如:1.authdefault{2.......3.socketlisten{4.client{5.path=/var/spool/postfix/private/auth6.mode=06607.user=postfix8.group=postfix9.}10.}11.......12.}authdefault{......socketlisten{client{path=/var/spool/posmode=0660为了保证用户名/密码安全,建议发送邮件服务器也强制使用安全连接:sudopostconf-e'smtpd_tls_auth_only=yes'sudopostconf-e'smtpd_tls_aut最后别忘使配置生效:$sudoservicepostfixreload$sudoservicedovecotreload$sudoservicepostfixreload$sudoservicedovecotreload此时再配置邮件客户端时,需要勾选SMTP认证,如下图(Outlook2010):至此,所有设置已经完成,使用邮件客户端收发应该正常,而且可以保证安全性。