首页 > Linux > 基于Debian简单配置Exim4+Courier+SquirrelMail邮件服务器

基于Debian简单配置Exim4+Courier+SquirrelMail邮件服务器

2011年4月23日 LTNS     访问次数 592 发表评论 阅读评论

Debian已升级至Squeeze (6.0) ,并安装了 LNMP 0.5一键安装包,然后按照网上的教程配置了一个 Exim4 + Courier + SquirrelMail 简单的SSL认证邮件服务器,包括:

MTA: Exim4
SMTP: Exim4 SSL
POP/IMAP: Courier SSL
WebMail: SquirrelMail

因vps空间和内存有限,所以反垃圾、杀毒、内容过滤等都不考虑。另外,只是自己折腾玩玩的,所以邮件用户就设置在本地域上,没有用虚拟域+数据库。

1. 安装相应的软件包

apt-get update
apt-get install exim4-daemon-heavy courier-authdaemon courier-imap courier-imap-ssl courier-pop courier-pop-ssl swaks

Squeeze已预装 exim4、ssl-cert和libnet-ssleay-perl,所以这里就不用重复安装了。如想查看已装软件清单,可以安装apt-show-versions进行查看

apt-get install apt-show-versions  #安装
apt-show-versions

2. 先做一下准备工作,在 /etc/skel/ 目录(用户目录的模板)下新建一个目录Maildir,这样以后创建新用户时会自动在用户目录下生成MailDir目录

maildirmake /etc/skel/Maildir
maildirmake ~/Maildir  #针对模板生效前的root帐号,在其目录下补建一个Maildir目录
adduser demouser  #创建一个用户,以后可用 demouser@域名 收发邮件

另,我用Debian自带的PAM认证后台,当然也可以用Courier的去替代,详请见参考文章。

3. 这时检查一下 POP/IMAP 端口开放的情况

netstat -utal | egrep -e  'pop|imap'
#执行如上命令后应类似如下显示
  tcp6       0      0 [::]:imaps              [::]:*                  LISTEN
  tcp6       0      0 [::]:pop3s              [::]:*                  LISTEN
  tcp6       0      0 [::]:pop3               [::]:*                  LISTEN
  tcp6       0      0 [::]:imap2              [::]:*                  LISTEN

注:相应的防火墙设置应允许穿透,还有主机在内网的话需设置相关的NAT映射(vps有公网ip,无需如此设置)。

4. 接下来配置Exim4,生成SMTP SSL证书

bash  /usr/share/doc/exim4-base/examples/exim-gencert

然后在vps上新建 /etc/exim4/exim4.conf.localmacros 文件(针对Exim4单一配置文件时的情形),写入内容如下两行(有的邮件客户端不认默认的25,所以这里添加一个发件端口465)

MAIN_TLS_ENABLE = true
tls_on_connect_ports = 465

注:这是一个宏文件,第二行的末尾必须有一个回车符,否则Exim4启动时会提示端口错误。

5. 修改 /etc/default/exim4 文件,以便使Exim4可在25和465端口上监听

...
# options for daemon listening on port 25
SMTPLISTENEROPTIONS='-oX 465:25 -oP /var/run/exim4/exim.pid'
...

6. 然后重新配置Exim4

dpkg-reconfigure exim4-config

配置中会提示如下问题

邮件系统设置的常见类型:互联网站 直接通过 SMTP 发送或接收信件
系统邮件名称:填自己的域名,比如邮件地址@符号后面的部分
要监听入站 SMTP 连接的 IP 地址:空白
其它可接收邮件的目的地址:localhost.localdomain:localhost:自己的域名
为下列域名进行邮件中转 (relay):空白
为下列主机进行邮件中转 (relay):空白
保持最小 DNS 查询量吗 (按需拔号,Dial-on-Demand)? 否
本地信件的投递方式:家目录中的Maildir格式
将设置文件分拆成小文件吗?否
(我记得曾出现过最后的一个提问,随便填了root,即,把收到的给postman等用户的邮件统一转给root@域名,之后这个提问就再也没出现过)

配置完成后会自动重启Exim4,如有出错,可到 /var/log/exim4/ 目录下检查日志,该目录下还有邮件收发的日志。另,配置的内容可在 /etc/exim4/update-exim4.conf.conf 文件里看到。

顺便提一下,如果有 /var/log/exim4/paniclog has non-zero size 出错提示,根据该文件内容排除问题后,一定要删除该文件后再重启Exim4

rm –rf /var/log/exim4/paniclog
/etc/init.d/exim4 restart  #重启

7. 检查一下 SMTP 端口的开放情况

netstat -utal | egrep -e  'smtp|ssmtp'
#执行如上命令后应类似如下显示
  tcp        0      0 *:ssmtp                 *:*                     LISTEN
  tcp        0      0 *:smtp                  *:*                     LISTEN
  tcp6       0      0 [::]:ssmtp              [::]:*                  LISTEN
  tcp6       0      0 [::]:smtp               [::]:*                  LISTEN

注:同样需确认一下防火墙的相应设置,还有处于内网时的NAT设置

8. 这时可检查邮件服务器是否正常,本地发给自己

echo "my test" | mail -s  "test message" root
#显示应类似如下
  2008-04-28 12:39:52 1JqL9c-0006VR-TM <= root@example.com U=root P=local S=358
  2008-04-28 12:39:52 1JqL9c-0006VR-TM => user <root@example.com> R=local_user T=maildir_home
  2008-04-28 12:39:52 1JqL9c-0006VR-TM Completed

或者发给外网的邮件地址(请自行用实际地址替换如下命令中的xxx@xxx.xxx)

echo "my test" |  mail -s "test message" xxx@xxx.xxx
#显示应类似如下
  2008-04-28 12:41:50 1JqLBW-0006Vg-Aq <= root@example.com U=root P=local S=356
  2008-04-28 12:41:53 1JqLBW-0006Vg-Aq => someone@elsewhere.com R=dnslookup T=remote_smtp H=smtp.elsewhere.com [209.85.201.27]
  2008-04-28 12:41:53 1JqLBW-0006Vg-Aq Completed

还可以检查一下SSL是否正常

swaks -a -tls -q HELO -s localhost -au  root -ap '&lt;&gt;'

swaks -a  -tls -q AUTH -s localhost -au root

9. 到邮件客户端程序(比如outlook express、foxmail等)设置一下,POP(995)/IMAP(993)和SMTP(25/465)都需要SSL认证,帐户名demouser,SMTP还需要发信身份认证,现在就可以在客户端对 demouser@域名 进行邮件收发了。 :)

当然,之前需要在域名服务商那里添加MX记录,可用win系统的DOS命令 nslookup -q=mx 域名 检查一下MX解析是否生效了。

 

10. webmail我安装了SquirrelMail

apt-get install squirrelmail
apt-get install squirrelmail-locales
apt-get install squirrelmail-decode
然后配置一下中文化
/etc/squirrelmail/conf.pl

进入设置界面后,根据提示选 language,修改其中的Default Language : zh_CN,还有Default Charset : UTF-8,然后保存退出。

11. SquirrelMail安装后的目录是 /usr/share/squirrelmail/ ,可将其链接至某个已有的虚拟空间的根目录下,或在vps上新建的虚拟空间配置文件中指向它以便通过邮箱域名访问。

12. 最后浏览器里登录SquirrelMail,如提示“/var/lib/squirrelmail/data/ 应该可以被用户 www 写入”就自行修改相关目录的权限。

还可以访问“已有域名/squirrelmail/src/configtest.php”地址检查一下配置是否有问题。

 

参考文章
http://edin.no-ip.com/blog/hswong3i/exim4-courier-ssl-debian-etch-mini-howto
http://www.zhuoda.org/xiezhi/98044.html

 

分类: Linux 标签: , , , , , ,
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.
4 - 3 = (必填)