通过亚马逊 SES 使用 Postfix 发送电子邮件时出现 SMTP 550 5.1.1 错误

通过亚马逊 SES 使用 Postfix 发送电子邮件时出现 SMTP 550 5.1.1 错误

我一直在关注这个手动的从第 26 页开始。

首先,我已经用 stunnel 建了一个隧道,并且已经通过以下方式连接命令行使用亚马逊服务器,然后在我的 postfix main.cf 配置文件中我得到了这个:

# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = mydomain.com ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# TLS parameters
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

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

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

relayhost = 127.0.0.1:2525
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_tls_security_level = may
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd

然后,当我尝试发送邮件时,/var/log/mail.log 中出现此错误:

2 月 29 日 22:23:03 ip-10-166-145-71 postfix/smtpd[29861]: NOQUEUE: 拒绝:来自 localhost[127.0.0.1] 的 RCPT: 550 5.1.1[电子邮件保护]:收件人地址被拒绝:127.0.0.1:2525; [电子邮件保护] [电子邮件保护]proto=ESMTP helo=ip-10-166-145-71.us-west-1.compute.internal

我已在 SES 面板上授予权限[电子邮件保护]。另外我不明白为什么 ehlo 是“ip-10-166-145-71.us-west-1.compute.internal”...我的 /etc/mailname 已经是 mydomain.com,我也尝试过 exim4,结果是一样的。

我已经发现了类似的问题但似乎只有我一个人被困在这个问题上。这是另一个教程我一直在关注。

答案1

详细的分步说明取自此博客。

  1. 下载并提取脚本这一页

  2. 来自 README 文件:这些脚本从环境变量中获取您的 AWS 访问密钥 ID 和秘密访问密钥。设置环境变量的过程取决于您的操作系统。您需要执行以下操作:

    • 创建一个名为的环境变量AWS_ACCESS_KEY_ID并将其设置为您的 AWS 访问密钥 ID。您的 AWS 访问密钥 ID 将如下所示:AKIAIOSFODNN7示例

    • 创建一个名为的环境变量AWS_SECRET_ACCESS_KEY并将其设置为您的 AWS 秘密访问密钥。您的 AWS 秘密访问密钥将如下所示:wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY

  3. 通过从 perl 脚本发送消息来测试设置。

    $ echo 'test msg' > msgbody.txt
    $ ./ses-send-email.pl -s "Test of Amazon SES" -f [email protected] [email protected] < msgbody.txt
    
  4. 请求 SES 访问权限,请转至这一页

  5. 配置postfix。修改master.cf以添加

    aws-email  unix  -       n       n       -       -       pipe
        flags=R user=support argv=/opt/thirdparty/amazon/bin/ses-send-email.pl -r -e https://email.us-east-1.amazonaws.com -f ${sender} ${recipient}
    

    然后修改main.cf以添加

    default_transport = aws-email
    
  6. SES.pm从解压的文件夹复制到/user/local/lib/site_perl(如果不存在,请创建一个),这很重要!

脚本说明:

Amazon SES 不再维护这些脚本。要通过命令行访问 Amazon SES,您可以使用 AWS 命令​​行界面或适用于 Windows PowerShell 的 AWS 工具。要将您的邮件服务器与 Amazon SES 集成,您可以使用 Amazon SES 简单邮件传输协议 (SMTP) 接口。有关更多信息,请参阅将 Amazon SES 与您现有的电子邮件服务器集成。

答案2

检查您的主机的正向和反向 DNS 记录。

卡琳

相关内容