如何使用 Dovecot 和 Postfix 为 catchall 邮件地址设置动态发件人地址?

如何使用 Dovecot 和 Postfix 为 catchall 邮件地址设置动态发件人地址?

有时我需要通过发件人地址发送邮件,而该地址通常会由万能邮件地址接收。但操纵返回邮件的常规方法并不是一个好的解决方案。因此,我使用 i-MSCP + RoundCube 的“工作”方案:

  • 固定邮箱和一个收集箱
  • 如果我需要通过动态邮件地址发送(将被 catchall 捕获),我会注册一个邮箱(临时用于这封邮件或邮箱+转发)并使用 RoundCube 的新凭证。

但是现在我有一个没有管理软件的最小服务器。我配置了带有固定邮箱和一个 catchall(基于正则表达式 + 黑名单)的 postfix。dovecot 还可以与 IMAP 和 catchall 凭据配合使用。除了我目前无法通过邮件客户端发送邮件(身份验证问题)之外,我还想有一种更简单的方法从任何地址发送邮件。我不想注册任何东西,只需使用<dynamic name>@domain.tld一个全局密码。

我的 postfix/dovecot:

  • 多个域
  • 没有数据库,只有哈希和正则表达式文件
  • maildir (接近标准)
  • 没有虚拟用户(catchall 有自己的 unix 用户)
  • 没有传输操作

Postfix 实现这个发送场景的秘密武器是什么?

我的main.cf(通过 smtp 登录还不起作用,常规发送和 imap 正在工作:

myhostname = domain.tld
smtpd_banner = $myhostname ESMTP $mail_name
biff = no
append_dot_mydomain = no
delay_warning_time = 4h
readme_directory = no

smtpd_tls_cert_file=/etc/letsencrypt/live/domain.tld/cert.pem
smtpd_tls_key_file=/etc/letsencrypt/live/domain.tld/privkey.pem
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_security_level = may
smtpd_tls_auth_only = no
smtpd_tls_received_header = yes
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_protocols = !SSLv2, !SSLv3

smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
smtp_tls_protocols = !SSLv2, !SSLv3

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination

alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = $myhostname, domain.tld, localhost
relayhost = 
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 = all
mynetworks_style = host
home_mailbox = Maildir/
virtual_alias_maps = hash:/etc/postfix/virtual, regexp:/etc/postfix/regexp_virtual

smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/recipient_access, permit_mynetworks, reject_unauth_destination

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd

答案1

虽然有些邮件提供商确实强制要求发件人地址属于经过身份验证的帐户,但这通常无效,尤其是对于 Postfix 的默认配置。实际上,当托管具有动态 IP 地址的家庭上行链路后面的服务器时,使用某些邮件提供商作为邮件中继是相当常见的(大多数黑名单都会阻止这些地址,因为大量垃圾邮件是从这些地址发送的)。我猜大多数甚至不强制要求发件人域。

您应该能够使用您的万能账户的邮件地址进行身份验证,但使用另一个发件人地址配置该账户。例如,Thunderbird 还允许为每个 SMTP 账户提供多个身份,这正好可用于此目的。

相关内容