就这些了!现在开始测试postfix和dovecot服务!
- service dovecot restart
- service postfix restart
在服务器上,尝试发送邮件给本地用户:
- telnet localhost 25
- EHLO cloud.linuxidc.net
- MAIL FROM:youremail@domain.com
- RCPT TO:roudy@linuxidc.net
- data
- Subject:Hallo!
- Thisis a test, to check if cloud.linuxidc.net is ready to be an MX!
- Cheers,Roudy
- .
- QUIT
服务器应该接受我们的邮件并返回类似消息:
- 2502.0.0Ok: queued as58D54101DB
如果一切正常的话,检查一下/var/log/mail.log里的日志。应该有类似下面的一行:
- Nov1407:57:06 cloud dovecot: lmtp(4375, roudy@linuxidc.net):... saved mail to INBOX
到这里一切都正常吗?不错。现在,让我尝试从不同的机器发邮件,比如说我们用来设定服务器的电脑。这次我们使用加密方式(TLS)和服务器对话:
- openssl s_client -connect cloud.linuxidc.net:25-starttls smtp
- EHLO cloud.linuxidc.net
- MAIL FROM:roudy@linuxidc.net
- rcpt to:bob@gmail.com
服务器应该有这样的响应:
- 5545.7.1<bob@gmail.com>:Relay access denied
这个没问题:如果服务器能接受这封邮件而不是返回如上的拒绝消息,那意味着我们架设的postfix是一个对全世界所有垃圾邮件都开放的中继,这将完全没法使用。除了'Relay access denied'消息,你也可能会收到这样的响应:
- 5545.7.1Service unavailable;Client host [87.68.61.119] blocked using zen.spamhaus.org; http://
意思是你正尝试从一个被标记成垃圾邮件发送者的IP地址连接服务器。我在通过普通的因特网服务提供商(ISP)连接服务器时曾收到过这样的消息。要解决这个问题,可以试着从另一个主机发起连接,比如另外一个你可以SSH登录的主机。另外一种方式是,你可以修改postfix的main.cf配置文件,不要使用Spamhous的RBL,重启postfix服务,然后再检查上面的测试是否正常。不管用哪种方式,最重要的是你要确定一个能工作的,因为我们后面马上要测试其他功能。如果你选择了重新配置postfix不使用RBL,别忘了在完成本文后重新开启RBL并重启postfix,以避免收到一些不必要的垃圾邮件。(LCTT 译者注:在国内可以使用 CASA 的 RBL:cblplus.anti-spam.org.cn,参见: 。)
现在,我们试一下往SMTP端口25发送一封有效的邮件,这是一般正常的邮件服务器用来彼此对话的方式:
- openssl s_client -connect cloud.linuxidc.net:25-starttls smtp
- EHLO cloud.linuxidc.net
- MAIL FROM:youremail@domain.com
- RCPT TO:roudy@linuxidc.net
服务器应该有这样的响应:
- Client host rejected:Greylisted, see http://postgrey.schweikert.ch/help/linuxidc.net.html
这意味着工作正常。postgrey做的是用临时错误拒绝未知发送者的邮件。邮件的技术规则是要求邮件服务器尝试重新发送邮件。在5分钟后,postgrey就会接收这封邮件。一般世界范围内遵守规则的邮件服务器都会尝试为我们重复投递邮件,但大多数垃圾邮件发送者不会这样做。所以,等上5分钟,再次通过上面的命令发送一次,然后检查postfix应该正常接收了邮件。
之后,我们检查一下我们可以通过IMAP和dovecot对话获取刚才发送的两封邮件。
- openssl s_client -crlf -connect cloud.linuxidc.net:993
- 1 login roudy@linuxidc.net "mypassword"
- 2 LIST """*"
- 3 SELECT INBOX
- 4 UID fetch 1:1(UID RFC822.SIZE FLAGS BODY.PEEK[])
- 5 LOGOUT
这里,你应该把mypassword替换为你自己为这个邮件账号设定的密码。如果能正常工作,基本上我们已经拥有一个能接收邮件的邮件服务器了,通过它我们可以在各种设备(PC/笔记本、平板、手机...)上收取邮件了。