Postfix:警告:连接到 127.0.0.1:10023:连接被拒绝,未接收来自外部域的邮件

Postfix:警告:连接到 127.0.0.1:10023:连接被拒绝,未接收来自外部域的邮件

我的 Postfix 服务器运行了一小段时间,并且运行正常,但是今天我不得不重新启动该服务器,而且我不再收到来自外部来源的电子邮件:

Jan 23 01:34:44 myservername postfix/smtpd[1055]: connect from db3ehsobe006.messaging.microsoft.com[213.199.154.144]
Jan 23 01:34:45 myservername postfix/smtpd[1055]: warning: connect to 127.0.0.1:10023: Connection refused
Jan 23 01:34:45 myservername postfix/smtpd[1055]: warning: problem talking to server 127.0.0.1:10023: Connection refused
Jan 23 01:34:46 myservername postfix/smtpd[1055]: warning: connect to 127.0.0.1:10023: Connection refused
Jan 23 01:34:46 myservername postfix/smtpd[1055]: warning: problem talking to server 127.0.0.1:10023: Connection refused
Jan 23 01:34:46 myservername postfix/smtpd[1055]: NOQUEUE: reject: RCPT from db3ehsobe006.messaging.microsoft.com[213.199.154.144]: 451 4.3.5 Server configuration problem; from=<MyKnownWorking@EmailAccountOutside> to=<[email protected]> proto=ESMTP helo=<db3outboundpool.messaging.microsoft.com>

服务器正在监听port 10023,但我注意到它只通过 IPv6 监听:

> sudo netstat -a | grep 10023
tcp6       0      0 ip6-localhost:10023     [::]:*                  LISTEN

我没有设置防火墙规则来拒绝该特定端口,见鬼,我继续刷新规则集只是为了确认这一点。这是我的 postconf -n 的输出(我编辑了我的域名来代替“mydomain.com”):

> sudo postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
    append_dot_mydomain = no
biff = no
broken_sasl_auth_clients = yes
config_directory = /etc/postfix
content_filter = amavis:[127.0.0.1]:10024
disable_vrfy_command = yes
inet_interfaces = all
inet_protocols = ipv4
mailbox_size_limit = 0
message_size_limit = 0
mydestination = localhost.$mydomain, localhost, mail.mydomain.com, servername.mydomain.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mynetworks_style = host
myorigin = /etc/mailname
readme_directory = no
receive_override_options = no_address_mappings
recipient_delimiter = +
relayhost =
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_use_tls = yes
smtpd_banner = mail.mydomain.com ESMTP $mail_name
smtpd_delay_reject = yes
smtpd_helo_required = yes
smtpd_recipient_restrictions = reject_unauth_pipelining, permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unauth_destination, check_policy_service inet:127.0.0.1:10023, permit
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain =
smtpd_sasl_security_options = noanonymous
smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks, warn_if_reject reject_non_fqdn_sender, reject_unknown_sender_domain, reject_unauth_pipelining, permit
smtpd_tls_cert_file = /etc/ssl/private/mail.mydomain.com.crt
smtpd_tls_key_file = /etc/ssl/private/mail.mydomain.com.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
virtual_alias_maps = mysql:/etc/postfix/maps/alias.cf
virtual_gid_maps = static:5000
virtual_mailbox_base = /var/spool/mail/virtual
virtual_mailbox_domains = mysql:/etc/postfix/maps/domain.cf
virtual_mailbox_limit = 0
virtual_mailbox_maps = mysql:/etc/postfix/maps/user.cf
virtual_uid_maps = static:5000

如您所见,我甚至尝试通过 inet_protocols 指定它侦听 ipv4 连接。我尝试过使用该命令和不使用该命令。

任何帮助解决问题的帮助都将不胜感激!当然,如果您发现我的配置中有任何明显愚蠢的地方,我也会提出建议或批评。

答案1

您上次检查smtpd_recipient_restrictions使用策略服务来验证收件人。通常,这是一项 postgrey 服务,并且 Postfix 连接时似乎存在一些问题。

smtpd_recipient_restrictions = ...,check_policy_service inet:127.0.0.1:10023, permit

如果你删除check_policy_service inet:127.0.0.1:10023从 smtpd_recipient_restrictions 中,您应该消除错误,但您仍然应该确定您的 postgrey 或在这里运行的其他服务发生了什么。

在 Unbuntu 系统上检查 Postgrey

通常,postgrey 默认配置将在端口 10023 上监听连接并确定是否应允许或拒绝这些连接。您可以检查 Unbutu 服务器上的一些部分以查看是否已安装这些部分...

  • 你有/etc/default/postgrey文件吗?这是基本配置文件。
  • 您有/etc/postgrey文件夹吗?您可以在这里将元素列入白名单。
  • 当你运行时,> which postgrey它会找到二进制文件吗?我的是在中找到的/usr/sbin/postgrey
  • 您有/etc/init.d/postgrey在启动时启动它的脚本吗?这是 Ubuntu 守护进程的典型位置。

这些只能为您提供一些线索,说明此服务器是否曾经postgrey配置过。如果该进程在您的服务器上运行不正常,您将需要进一步查找故障排除。

答案2

面对同样的问题,尝试了很多方法,比如布谢阿,通过谷歌搜索并尝试。
根据:Ubuntu 14.04.2 LTS,postgrey服务启动,但未出现在进程列表中,即服务启动但悄悄退出。

找到解决方案来改变行/etc/default/postgrey

更改此行:

POSTGREY_OPTS="--inet=10023"

对此

POSTGREY_OPTS="--inet=127.0.0.1:10023"

无需调整端口、协议,也无需降级任何版本。无法解释原因,但服务正常ps -aux,一切正常。

答案3

实际上,您不必使用 ipv6,您可以将 Postgrey 和 Postfix 设置为 ipv4。问题是,Postgrey(可能是 1.33 及更新版本)拒绝在 ipv4 localhost ip 127.0.0.1 上启动,因此您可以使用 ethX ip 地址。

/etc/postfix/main.cf改变这个:

check_policy_service inet:127.0.0.1:10023

到:

check_policy_service inet:<your_ipv4_address>:10023

然后重新启动 Postfix:

sudo service postfix restart

/etc/default/postgres 目录改变这个:

POSTGREY_OPTS="--inet=10023 --delay=60"

到:

POSTGREY_OPTS="--inet=<your_ipv4_address>:10023 --delay=60"

然后重新启动Postgre:

sudo service postgrey restart

这个 Debian 邮件列表消息非常有用:

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=656046#25

答案4

Davis - 你说得对,postgrey 在 12.04LTS 中进行了更改,以便在 IPv6 中工作。升级不会针对 postfix 进行更改,也不会提醒你进行更改。

所以你必须自己动手。更改此设置:

check_policy_service inet:127.0.0.1:10023

到:

check_policy_service inet:::1:10023

在你的/etc/postfix/master.cf文件,然后重新启动 postfix:

sudo service postfix restart

它将允许 postfix 与 postgres 进行 IPv6 对话。

相关内容