我在我的 VPS 上重新安装了全新的、干净的 Debian 8。
全部设置为默认值。
dpkg -s exim4
并dpkg -s postfix
说进出口不是安装了,那个后缀是安装。通过lsof -i :25
显示 PID 478,然后ps p 478
显示 来确认这一点478 ? Ss 0:00 /usr/lib/postfix/master
。我没做过apt-get install postfix
,好像已经默认安装了。
我已经example.com
由我的注册商完成了 DNS MX 记录,将其定向到我的服务器。
我刚刚从 Gmail 发送了一封电子邮件至[email protected]
。
我
No mail
做的时候还是看的$ mail
。如何查看东西是否已到达 postfix?
是否需要在全新安装的 Debian 上进行配置以接受来自互联网的电子邮件?
我应该在本地创建邮箱
root
以接受来自外部邮件发送者的邮件吗[email protected]
?
这是结果iptables
(未修改,默认配置):
root@blah:~# iptables -nvL
Chain INPUT (policy ACCEPT 77135 packets, 50M bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 2 packets, 120 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 66416 packets, 11M bytes)
pkts bytes target prot opt in out source destination
我现在看到了cat /var/log/mail.log
:
Nov 22 11:57:32 blah postfix/smtpd[10485]: connect from mail-ua0-f171.google.com[209.85.xxx.xxx]
Nov 22 11:57:32 blah postfix/smtpd[10485]: NOQUEUE: reject: RCPT from mail-ua0-f171.google.com[209.85.xxx.xxx]: 454 4.7.1 <[email protected]>: Relay access denied; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<mail-ua0-f171.google.com>
Nov 22 11:57:32 blah postfix/smtpd[10485]: disconnect from mail-ua0-f171.google.com[209.85.xxx.xxx]
答案1
此行包含您需要的有用信息
Nov 22 11:57:32 blah postfix/smtpd[10485]: NOQUEUE: reject: RCPT from mail-ua0-f171.google.com[209.85.xxx.xxx]: 454 4.7.1 <[email protected]>: Relay access denied; from=<[email protected]> to=<[email protected] ...
这告诉您的是,您的机器拒绝将来自 Google 的消息转发到[电子邮件受保护]。现在,您知道您的机器是 example.com,但显然您的机器不是。
解决方案:修改本地配置以包含 example.com 作为本地计算机的名称。 Postfix 网站上有一个易于阅读的文档 (((BASIC_CONFIGURATION_README.html)[http://www.postfix.org/BASIC_CONFIGURATION_README.html#mydestination])解释了如何设置:
我自己的域名
mydomain 参数指定 $myhostname 的父域。默认情况下,它是通过剥离第一部分从 $myhostname 派生的(除非结果是顶级域)。
相反,如果您在 main.cf 中指定 mydomain,则 Postfix 将使用其值为 myhostname 参数生成完全限定的默认值。
示例(仅指定以下其中一项):
/etc/postfix/main.cf: mydomain = local.domain mydomain = virtual.domain (virtual interface)
接收哪些域的邮件
mydestination 参数指定该机器将在本地传送哪些域,而不是转发到另一台机器。默认为机器本身接收邮件。请参阅 VIRTUAL_README 文件了解如何为托管域配置 Postfix。
您可以指定零个或多个域名、“/file/name”模式和/或“type:table”查找表(例如 hash:、btree:、nis:、ldap: 或 mysql:),以空格和分隔符分隔/ 或逗号。 “/file/name”模式被其内容替换; “type:table”请求完成表查找并仅测试是否存在:查找结果将被忽略。
重要信息:如果您的计算机是整个域的邮件服务器,则还必须列出 $mydomain。
示例1:默认设置。
/etc/postfix/main.cf: mydestination = $myhostname localhost.$mydomain localhost
示例 2:域范围的邮件服务器。
/etc/postfix/main.cf: mydestination = $myhostname localhost.$mydomain localhost $mydomain
示例 3:具有多个 DNS A 记录的主机。
/etc/postfix/main.cf: mydestination = $myhostname localhost.$mydomain localhost www.$mydomain ftp.$mydomain
注意:为了避免邮件传递循环,您必须列出计算机的所有主机名,包括 $myhostname 和 localhost.$mydomain。
所以,这应该足够了:
mydomain = example.com
...
mydestination = $myhostname localhost.$mydomain localhost $mydomain
答案2
除了 roaima 的答案之外,这也解决了这个问题:
mydestination = <....>, mydomain.com
在in末尾添加域名/etc/postfix/main.cf
注释掉这一行:
#mailbox_command = procmail -a "$EXTENSION"
然后从 Gmail 发送电子邮件至
[email protected]
,等待几秒钟这样做
mail
,您将看到新电子邮件:)