AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 520903
Accepted
dotancohen
dotancohen
Asked: 2013-07-05 08:12:26 +0800 CST2013-07-05 08:12:26 +0800 CST 2013-07-05 08:12:26 +0800 CST

Postfix 邮件转发在不同的发送位置表现不同

  • 772

我正在 Ubuntu Server 12.04 上配置 Postfix 安装,以将少量邮件从服务器上的特定地址转发到另一个域的特定地址。

$ pwd
/etc/postfix

$ cat main.cf 
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

append_dot_mydomain = no
readme_directory = no

smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

myhostname = awsBeta
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = awsBeta, localhost.localdomain, , localhost, someDomain.com
relayhost = 
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

virtual_mailbox_domains = someDomain.com
virtual_mailbox_base = /var/mail/vhosts
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_minimum_uid = 100
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000

virtual_alias_domains = someDomain.com
virtual_alias_maps = hash:/etc/postfix/virtual

$ cat virtual
[email protected] [email protected]

$ 

当我登录服务器上的 PHP CLI 解释器发送邮件时,邮件被正确传递到[email protected]. 请注意,这dotancohen.com是一个 Google Apps 域,MX 记录由 Google 托管。

$ php -a
Interactive shell

php > mail('[email protected]','Subject','tMessage', 'From: <[email protected]>');

我可以看到邮件已经到达[email protected]收件箱。这告诉我转发器有效。现在我从桌面的 telnet 提示符尝试:

$ telnet mail.someDomain.com 25
Trying x.x.x.x...
Connected to mail.someDomain.com.
Escape character is '^]'.
220 someHostname ESMTP Postfix (Ubuntu)
EHLO dotancohen.com
250-someHostname
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
MAIL FROM: [email protected]
250 2.1.0 Ok
RCPT TO: [email protected]
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
From: [email protected]
SUBJECT: Hi, telnet!

This is a second attempt! 
.
250 2.0.0 Ok: queued as 9851E81579
QUIT
221 2.0.0 Bye
Connection closed by foreign host.
$ 

此邮件未送达,我在 postfix 日志中找到以下内容:

Jul  4 16:02:58 someHostname postfix/smtp[24898]: connect to ASPMX.L.GOOGLE.com[2607:f8b0:400c:c03::1b]:25: Network is unreachable
Jul  4 16:02:58 someHostname postfix/smtp[24898]: 935BC81579: to=<[email protected]>, orig_to=<[email protected]>, relay=ASPMX.L.GOOGLE.com[173.194.75.26]:25, delay=15, delays=15/0.02/0.08/0.15, dsn=2.0.0, status=sent (250 2.0.0 OK 1372953778 d3si1064427vck.0 - gsmtp)

看起来 Google 收到了邮件,但决定(可能是由于 SPF)不发送它。它也不在我的垃圾邮件文件夹中!最后,我尝试简单地从一个不相关的 Hotmail 帐户向该域发送电子邮件。这封电子邮件也未送达,但 Postfix 日志中没有任何内容。

为了完整起见,这里是经过匿名化处理的 MX 记录:

$ dig mx someDomain.com
someDomain.com.        1800    IN      MX      10 mail.someDomain.com.

$ dig a mail.someDomain.com
mail.someDomain.   1790    IN      A       x.x.x.x

我可以确认这x.x.x.x实际上是服务器的正确 IP 地址,并且与我使用 telnet 访问的地址相同。

为什么来自合法邮箱账户(如hotmail账户)的邮件无法投递到该[email protected]账户?

ubuntu
  • 2 2 个回答
  • 238 Views

2 个回答

  • Voted
  1. Best Answer
    Falcon Momot
    2013-07-06T05:16:15+08:002013-07-06T05:16:15+08:00

    这一行:

    Jul  4 16:02:58 someHostname postfix/smtp[24898]: connect to ASPMX.L.GOOGLE.com[2607:f8b0:400c:c03::1b]:25: Network is unreachable
    

    意味着您通过 telnet 访问的 SMTP 服务器之间存在 ipv6 路由问题2607:f8b0:400c:c03::1b。防火墙当然也可以将 ICMP 消息报告为阻止数据包的一种方式,但请尝试 ping 它。例如,您可能正在进行部分或间歇性的 ipv6 路由。如果您发现您有时只能 ping 它或者您根本无法 ping 它并且回复始终告诉您没有路由,则您的上游 ISP(或为您提供 IPv6 路由的任何人)需要解决他们的路由问题。

    端口 25 阻塞也可能正在进行。这是非常常见的;如果您使用 hurricane Electric 进行 IPv6 连接,除非您特别要求允许,否则它们会阻止端口 25 的传出;大多数 ISP 都是这种情况(因为如果不是这种情况,垃圾邮件发送者就会蜂拥而至,并且不利于他们的限制性政策开始随处出现,因为他们获得了垃圾邮件避风港的声誉)。

    此问题不是由 SPF 或 DKIM 或基于内容的垃圾邮件过滤引起的;这是一个网络问题。

    • 2
  2. dotancohen
    2013-07-06T04:25:52+08:002013-07-06T04:25:52+08:00

    问题是端口 25 被防火墙关闭了!我的本地 IP 地址(我所在的位置)为它打开了所有端口,因此我可以远程登录。Hotmail 和其他合法电子邮件提供商没有端口 25 访问权限,因此日志文件中没有任何内容!

    • 0

相关问题

  • 无法通过 Ubuntu VPN 访问外部网络

  • ubuntu apt-get upgrade - 如何在 shell 中单击确定?

  • VirtualBox 上 Ubuntu 的访客优化技巧 [关闭]

  • 外部硬盘上的 virtualbox 虚拟硬盘驱动器(Vista 主机上的 ubuntu 客户机)

  • 如何在 Ubuntu 上挂载 LVM 分区?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve