Postfix 中继连接错误、身份验证错误、发件人地址被拒绝以及指定发件人问题

Postfix 中继连接错误、身份验证错误、发件人地址被拒绝以及指定发件人问题

我想使用 postfix 通过外部 smtp 服务器中继所有消息。

尽管我能够通过 telnet 连接到 SMTP 服务器,但还是出现了连接超时和被拒绝错误。

然后我收到身份验证错误。服务器返回“此服务器需要身份验证”消息。

然后我收到“发件人地址被拒绝:需要完全合格的地址”错误。

之后,我想以 info@mydomain 而不是 root@mydomain 的身份发送电子邮件。

最后,当我尝试将消息发送到 /etc/hostname 中写入的同一域时,消息并没有被中继到外部 SMTP。

我将回答我自己的问题以分享我找到的解决方案,希望它能够帮助其他人减少调试时间的浪费。

答案1

我正在使用 Debian buster,并且已经通过 安装了 postfix apt-get install

我如何解决连接超时和连接被拒绝的问题:

在 /etc/postfix/main.cf 中你需要有

relayhost = [smtp.server.com]:PORT

代替

relayhost = smtp.server.com:PORT

我花了几个小时才找到这个解决方案。你需要括号。

我如何解决身份验证问题

smtp_sasl_password_maps = static:smtp_username: smtp_password

成功了。这很可能也可以通过里面的配置来解释,里面的配置是我创建哈希映射时使用的/etc/postfix/sasl_passwd格式,并设置为。我仍然不确定映射中的身份验证条目的正确格式是什么(带或不带括号,带或不带端口号)。[smtp.server.com]:PORT username:password/etc/postfix/sasl_passwd.dbpostmap /etc/postfix/sasl_passwd/etc/postfix/main.cfsmtp_sasl_password_maps = /etc/postfix/sasl_passwd.db

我如何解决“发件人地址被拒绝:需要完全合格的地址”错误:

/etc/hostname在更改为 SMTP 服务器可以接受的内容后,我仍然需要重新启动计算机。

我如何通过中继发送电子邮件[电子邮件保护]代替[电子邮件保护]

如果我尝试

echo "Test Email message body" | mail -s "Email test subject" [email protected] 

电子邮件到达账户[电子邮件保护]好像它是从logged_on_user_linux@hostname_linux发送的。要将发件人电子邮件更改为info@而不是root@,我执行以下操作:

echo "This is the main body of the mail" | mail -s "Some random subject" -a "From: [email protected]" [email protected]

如何让 postfix 将所有电子邮件转发到外部 SMTP

外部 SMTP 使用 domain.com,它需要来自该域用户的消息。因此,我需要更改/etc/hostname为 domain.com(虽然规范地址映射也可能解决这个问题,而无需更改主机名,但我不确定,因为我对 postfix 还不太熟悉)。它起作用了,电子邮件开始到达,发件人是[email protected]。但这种设置妨碍了我发送电子邮件到[电子邮件保护]由于我的/etc/hostname域名也是 domain.com,postfix 将这些消息保留给自己。解决方法是更改/etc/postfix/main.cf​​:

代替

mydestination = $myhostname, domain.com, localhost, localhost.localdomain, localhost

下列

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

并且

myhostname = localhost

我不太确定myhostname之前的值是多少,但它可能以某种方式指向 domain.com。

相关内容