发新话题
打印

用 exim4 和 popa3d 搭建一个简单可用的邮件系统

本主题由 sanool 于 2008-1-30 15:22 加入精华

用 exim4 和 popa3d 搭建一个简单可用的邮件系统

我的系统是虚拟机上的 Debian/lenny,目标是在本机上有一个可用的 SMTP 和 POP3 服务器,这里 SMTP 用 exim4 ,POP3 由 popa3d 提供。
装好Debian后默认就装上了exim4,其实安装 exim4 也很简单:
复制内容到剪贴板
代码:
apt-get install exim4 exim4-base exim4-config exim4-daemon-light
接着配置 exim4
复制内容到剪贴板
代码:
dpkg-reconfigure exim4-config
"邮件系统设置的常见类型"配置为"直接通过 SMTP 发送或接收信件",设置好"其它可接收邮件的目的地址",“为下列主机进行邮件中转 (relay)”设置为"127.0.0.1:192.168.0.0/16"只给本地网络用户转信。最后"本地信件的投递方式"选择" /var/mail/ 中的 mbox 格式",因为  popa3d 默认是这个格式(还是只支持这个格式?)。然后exim4重启,就可以收发邮件了。
安装 popa3d
复制内容到剪贴板
代码:
apt-get install popa3d
用 netstat -l 看一下,pop3 和 smtp 服务已经打开了。
因为是在局域网内,所以在路由器上做了 25,110 端口映射(TCP协议)。
邮件客户端的设置:smtp 服务器设为服务器IP,因为上面设置了只给本地网络转信(如果设置为*,因为没设 SMTP 认证,大有可能成别人发垃圾邮件的跳板),pop3 服务器设为服务器IP或你的动态域名,用户名是系统是的非 root 帐户,密码同帐户的系统登录密码,收发信就正常了。
关于动态域名,希网的更新可参照如下
复制内容到剪贴板
代码:
lynx -mime_header -auth=USERASSWORD "http://www.3322.org/dyndns/update?system=dyndns&hostname=HOST.3322.org&mx=HOST.3322.org"
去申请一个 cn 域名,将 mx 记录指向你的动态域名,在 exim4 的"其它可接收邮件的目的地址"中加入你的cn域名,一个属于你自己的个性化邮件就打造出来了。
暂时还搞不清楚 exim4 的 smtp 认证要怎么设置,如果想从外面发信,现在只知道限定到某一个城市的IP(用转信域,比如东莞用'*.broad.dg.gd.dynamic.163data.com.cn')

[ 本帖最后由 icatman 于 2008-1-30 11:58 编辑 ]
咋没人顶?虽然自己用不上,也顶一下,呵呵
整不明白啊
这几日又弄了一下,有了一些进展:

1、中转的域名/主机的设置:如果你想用本地的 exim4 代你发信件(邮箱的 smtp 服务器填 exim4 服务器的 IP),而不是登录到其他邮件服务器发信,可以设置中转主机为本地网段,如 192.168.0.0/16 。虽然本地中转发邮件的发信过程几乎即时完成,但只是已经发到本地 exim4 服务器上,不能保证一定能顺利转发出去,有时会遇到拒收的情况,要小心求证。

2、关于 exim4 的用户验证 (auth):先设定两个宏,让 exim4 支持 TLS 认证和明文认证,单一配置文件的可新建或编辑 /etc/exim4/exim4.conf.localmacros ,分离配置文件的可以用 /etc/exim4/conf.d/main/00_localmacros 文件,加入两句
复制内容到剪贴板
代码:
MAIN_TLS_ENABLE = true
AUTH_SERVER_ALLOW_NOTLS_PASSWORDS = true
如果只用明文验证,编辑 /etc/exim4/exim4.conf.template 或 /etc/exim4/conf.d/auth/30_exim4-config_examples 文件,将 plain_server 和随后 login_server 段的注释去掉即可。

如果想用 saslauthd 提供的安全验证(TLS),同样是编辑上面的两个文件,不过是将 plain_saslauthd_server 和 login_saslauthd_server 段的注释去掉,并且要安装和配置 saslauthd。
1)先安装 openssl ,生成 exim4 的证书
复制内容到剪贴板
代码:
apt-get install openssl
/usr/share/doc/exim4-base/examples/exim-gencert
2)安装和配置 saslauthd
复制内容到剪贴板
代码:
apt-get install sasl2-bin
编辑 /etc/default/saslauthd ,将 START=no 改成 START=yes
3)因为 exim4 要用到 saslauthd 的服务需 Debian-exim 用户在 sasl 用户组下
复制内容到剪贴板
代码:
adduser Debian-exim sasl
4)重启 saslauthd 服务
复制内容到剪贴板
代码:
/etc/init.d/saslauthd restart
为使 auth 生效,更新配置并重启 exim4:
复制内容到剪贴板
代码:
update-exim4.conf
/etc/init.d/exim4 restart
网上说用户密码应该用 /usr/share/doc/exim4-base/examples/exim-adduser 设置,密码文件为 /etc/exim4/passwd ,但照我的试验是只认用户的系统密码。saslauthd 部分参考 http://wiki.ubuntu.org.cn/UbuntuHelp:Exim4

我用本地的邮件系统做了不同发信方式的试验,都是用本地邮箱 icatman@hotend.cn 发到 icatman@hotend.cn,服务器设为本地的动态域名,试验结果如下:
复制内容到剪贴板
代码:
不用SSL,不用密码发信 ok
2008-02-21 14:27:46 1JS4uI-0001TU-5w <= icatman@hotend.cn H=(chenqj) [59.37.219.67] P=smtp S=671 id=665434F9FC3945FA82F3597E63D55089@chenqj
2008-02-21 14:27:46 1JS4uI-0001TU-5w => icatman <icatman@hotend.cn> R=local_user T=mail_spool
2008-02-21 14:27:46 1JS4uI-0001TU-5w Completed

不用SSL,用密码发信 ok
2008-02-21 14:29:59 1JS4wR-0001Ta-09 <= icatman@hotend.cn H=(chenqj) [59.37.219.67] P=esmtpa A=login_saslauthd_server:icatman S=669 id=F9832FC58E36412A8A25F88915C93FF9@chenqj
2008-02-21 14:29:59 1JS4wR-0001Ta-09 => icatman <icatman@hotend.cn> R=local_user T=mail_spool
2008-02-21 14:29:59 1JS4wR-0001Ta-09 Completed

使用SSL,不用密码发信 ok
2008-02-21 14:33:22 1JS4zi-0001Ti-QX <= icatman@hotend.cn H=(chenqj) [59.37.219.67] P=smtps X=TLS-1.0:RSA_ARCFOUR_MD5:16 DN="" S=698 id=6C0EAB0EF1544766B42FC54D72007597@chenqj
2008-02-21 14:33:23 1JS4zi-0001Ti-QX => icatman <icatman@hotend.cn> R=local_user T=mail_spool
2008-02-21 14:33:23 1JS4zi-0001Ti-QX Completed

使用SSL,使用密码发信 ok
2008-02-21 14:35:40 1JS51w-0001Tn-Dz <= icatman@hotend.cn H=(chenqj) [59.37.219.67] P=esmtpsa X=TLS-1.0:RSA_ARCFOUR_MD5:16 DN="" A=login_saslauthd_server:icatman S=700 id=542FABB00F7A4D3E90AA8945734A2F8C@chenqj
2008-02-21 14:35:40 1JS51w-0001Tn-Dz => icatman <icatman@hotend.cn> R=local_user T=mail_spool
2008-02-21 14:35:40 1JS51w-0001Tn-Dz Completed
试验前已经将 exim4 的中转主机/域名清空,这时如果要用本地邮件服务代其他邮箱对外发信,必须登录后才能发信成功,用户验证真的起作用了。

[ 本帖最后由 icatman 于 2008-2-23 11:13 编辑 ]
看不大懂,楼主能不能在详细些?还有我的是Ubuntu,能一样实现吗?
发新话题