postfix 使用外部中继将邮件传递到同一域

postfix 使用外部中继将邮件传递到同一域

我当时正在看这个答案来解决我的问题,但我发现我已经设置它了。

重点是:我正在运行 postfix 以使用 Gsuite 传递邮件。如果我将邮件传递到任何其他域,它都可以正常工作。如果我将邮件发送到某个地址,@mydomain它将尝试在内部发送。无论如何,我想强制 posftix 使用 Gsuite SMTP 发送它。

日志显示:

Oct  6 17:44:42 mydomain postfix/pickup[277348]: 84DFB1E3E9: uid=33 from=<www-data>
Oct  6 17:44:42 mydomain postfix/cleanup[277442]: 84DFB1E3E9: message-id=<[email protected]>
Oct  6 17:44:42 mydomain postfix/qmgr[2082]: 84DFB1E3E9: from=<[email protected]>, size=451, nrcpt=1 (queue active)
Oct  6 17:44:42 mydomain postfix/local[277444]: 84DFB1E3E9: to=<[email protected]>, relay=local, delay=0.03, delays=0.02/0.01/0/0.01, dsn=5.1.1, status=bounced (unknown user: "admin")
Oct  6 17:44:42 mydomain postfix/cleanup[277442]: 8AD961E3EA: message-id=<[email protected]>
Oct  6 17:44:42 mydomain postfix/bounce[277445]: 84DFB1E3E9: sender non-delivery notification: 8AD961E3EA
Oct  6 17:44:42 mydomain postfix/qmgr[2082]: 8AD961E3EA: from=<>, size=2331, nrcpt=1 (queue active)
Oct  6 17:44:42 mydomain postfix/qmgr[2082]: 84DFB1E3E9: removed
Oct  6 17:44:42 mydomain postfix/local[277444]: 8AD961E3EA: to=<[email protected]>, relay=local, delay=0.01, delays=0/0/0/0, dsn=2.0.0, status=sent (delivered to mailbox)
Oct  6 17:44:42 mydomain postfix/qmgr[2082]: 8AD961E3EA: removed

请注意,管理员不是服务器上定义的用户,因此邮件被退回。我的主机名是mydomain.com

我的 postfix main.cf:

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

append_dot_mydomain = no

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

readme_directory = no
compatibility_level = 2

# 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
smtp_tls_wrappermode =  yes



relayhost= [smtp-relay.gmail.com]:465
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = thesmartred.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = $myhostname, mydomain.com, localhost.mydomain.com, localhost
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = ipv4
# Enable SASL authentication
smtp_sasl_auth_enable = yes
# Disallow methods that allow anonymous authentication
smtp_sasl_security_options = noanonymous
# Location of sasl_passwd
smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd
# Enable STARTTLS encryption
smtp_tls_security_level = encrypt
# Location of CA certificates
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt

我究竟做错了什么?

答案1

实际上我使用传输指令解决了这个问题。我在 main.cf 中添加了以下内容:

transport_maps =  hash:/etc/postfix/transport 

然后我使用创建了传输文件

*  smtp:[smtp-relay.gmail.com]:465

将使用 gmail smtp(内部和外部)传递所有电子邮件。

然后我跑

postmap hash:/etc/postfix/transport

最后我重新启动了 postfix,一切都修复了。

答案2

您将域名放入 中mydestination。这会告诉 Postfix 它要处理发送到该域的邮件,因此它会尝试在本地递送此类邮件。

对于用于中继所有内容的邮件服务器,裸域名不应位于mydestination文件中/etc/mailname。(子域名是可以的。)

此外,系统主机名绝不能设置为裸域名,因为这也会使 Postfix 感到困惑。

相关内容