Postfix 配置错误?550 发件人被接收服务器拒绝

Postfix 配置错误?550 发件人被接收服务器拒绝

我们在 CentOS 6 机器上使用 Postfix,配置如下。我们使用 PHP 的mail()功能发送基本的密码重置电子邮件,但存在一个问题。

正如您所看到的,据我所知,mydomain 和 myhostname 已正确设置。

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
html_directory = no
inet_interfaces = localhost
inet_protocols = all
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
mydestination = $myhostname, localhost.$mydomain, localhost
mydomain = ***.ch
myhostname = test.***.ch
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES
sample_directory = /usr/share/doc/postfix-2.6.6/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
unknown_local_recipient_reject_code = 550

/var/log/maillog现在,这是在向发送电子邮件时 Postfix中的内容***.***@***.ch,并且与***.ch我们的发送服务器位于同一域test.***.ch上:

Dec 13 16:55:06 R12X0210 postfix/pickup[6831]: E6D6311406AB: uid=48 from=<apache>
Dec 13 16:55:06 R12X0210 postfix/cleanup[6839]: E6D6311406AB: message-id=<20121213155506.E6D6311406AB@test.***.ch>
Dec 13 16:55:07 R12X0210 postfix/qmgr[6832]: E6D6311406AB: from=<apache@test.***.ch>, size=1276, nrcpt=1 (queue active)
Dec 13 16:55:52 R12X0210 postfix/smtp[6841]: E6D6311406AB: to=<***.***@***.ch>, relay=mail.***.ch[**.**.249.3]:25, delay=46, delays=0.18/0/21/24, dsn=5.0.0, status=bounced (host mail.***.ch[**.**.249.3] said: 550 Sender Rejected (in reply to RCPT TO command))
Dec 13 16:55:52 R12X0210 postfix/cleanup[6839]: 8562C11406AC: message-id=<20121213155552.8562C11406AC@test.***.ch>
Dec 13 16:55:52 R12X0210 postfix/bounce[6848]: E6D6311406AB: sender non-delivery notification: 8562C11406AC
Dec 13 16:55:52 R12X0210 postfix/qmgr[6832]: 8562C11406AC: from=<>, size=3065, nrcpt=1 (queue active)
Dec 13 16:55:52 R12X0210 postfix/qmgr[6832]: E6D6311406AB: removed
Dec 13 16:55:52 R12X0210 postfix/local[6850]: 8562C11406AC: to=<root@test.***.ch>, orig_to=<apache@test.***.ch>, relay=local, delay=0.13, delays=0.07/0/0/0.05, dsn=2.0.0, status=sent (delivered to mailbox)
Dec 13 16:55:52 R12X0210 postfix/qmgr[6832]: 8562C11406AC: removed

因此接收服务器拒绝了发送者(日志输出的第 4 行)。我们已经用另一个接收者测试过,并且成功了,所以这个问题可能与我们的设置完全无关,但与接收者有关。

尽管如此,对于这个问题,我想确保我们没有犯明显的配置错误。

答案1

首先,您应该告知 PHP mail() 函数谁是邮件的发件人,如果您不这样做,它将获取运行 PHP 的用户的名称并在其中添加 @test.*****.ch ,而我猜 test.****.ch 没有 MX 记录,不用于接收邮件。

现在给出一般性建议:

当处理仅发送邮件的卫星邮箱时,这是我的方法(当您没有 test.***.ch 作为单独的邮件域时)。

在主邮件服务器上,我为每台服务器创建了一个用于发送邮件的帐户,我使用此帐户信息将所有邮件转发到主邮件服务器,以便他可以处理进一步的投递。要进行设置,请查看 smtp_sasl 选项。

之后创建一个文件 /etc/postfix/generic,内容如下:

@test.*****.ch  server.test@*****.ch

并运行:

postmap hash:/etc/postfix/generic

现在添加到您的 main.cf 文件:

smtp_generic_maps = hash:/etc/postfix/generic

并且为了更好的措施,请转发 root 的邮件(通过 /etc/aliases 或 /root/.forward)将所有 root 的邮件重定向到系统管理员的电子邮件地址。

当然,完成所有操作后您需要重新启动 Postfix。

所有这些都解决了几个问题:

  1. 来自系统的所有邮件都以 test.*****.ch 作为域名,通过创建通用映射,我们告诉 Postfix 将 test.*****.ch 替换为 *****.ch,这是一个具有 MX 的有效电子邮件域名
  2. 由于我们正在向远程邮件服务器进行身份验证,因此我们可能可以跳过许多未经身份验证的用户无法进行的检查
  3. 发给 root 的邮件被重定向到正确的邮箱

答案2

据我所知,目标服务器不喜欢发件人 apache@test.***.ch

您可以尝试添加myorigin = $mydomain到 Postfixmain.cf配置文件

答案3

接收方域是否在进行发送方验证?如果是,test.xxxxx.ch 是否有正确的 DNS 和/或 MX 记录。接收主机上的日志会显示什么,因为它们将提供更多信息。我会确保 test.xxxx.ch 具有正确的 dns/mx,并接受将响应 RCPT TO 的传入连接[电子邮件保护],这样当接收主机尝试进行发送方验证时它将通过。

相关内容