我当时正在看这个答案来解决我的问题,但我发现我已经设置它了。
重点是:我正在运行 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 感到困惑。