如何配置 Postfix 以进行每个发件人 SASL 身份验证

如何配置 Postfix 以进行每个发件人 SASL 身份验证

我有两个 gmail 帐户,我想将我的本地 postfix 服务器配置为客户端,使用依赖于发件人地址的凭据对 smtp.gmail.com:587 进行 SASL 身份验证。

因此,假设我的 gmail 帐户是:[email protected]和。​​如果我在标题字段中[email protected]发送了邮件,则 postfix 应使用凭据:对 gmail SMTP 服务器进行 SASL 身份验证。同样,对于,它应该使用。听起来相当简单。[email protected]FROM[email protected]:psswd1[email protected][email protected]:passwd2

好吧,我按照 postfix 官方文档进行操作http://www.postfix.org/SASL_README.html,最后我得到了以下相关配置:

/etc/postfix/main.cf

    smtp_sasl_auth_enable = yes
    smtp_sasl_security_options = noanonymous
    smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
    smtp_sender_dependent_authentication = yes
    sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relay

    smtp_tls_security_level = secure
    smtp_tls_CAfile = /etc/ssl/certs/Equifax_Secure_CA.pem
    smtp_tls_CApath = /etc/ssl/certs
    smtp_tls_session_cache_database = btree:/etc/postfix/smtp_scache
    smtp_tls_session_cache_timeout = 3600s
    smtp_tls_loglevel = 1
    tls_random_source = dev:/dev/urandom

    relayhost = smtp.gmail.com:587

在 /etc/postfix/sasl_passwd 文件中

    [email protected]      [email protected]:passwd1
    [email protected]      [email protected]:passwd2

    smtp.gmail.com:587  [email protected]:passwd1

/etc/postfix/sender_relay

    [email protected]      smtp.gmail.com:587
    [email protected]      smtp.gmail.com:587

完成我所做的配置后:

    $ postmap /etc/postfix/sasl_passwd
    $ postmap /etc/postfix/sender_relay
    $ /etc/init.d/postfix restart

问题是,当我从 发送邮件时[email protected],邮件最终到达的目的地是发件人地址[email protected],而不是[email protected],这意味着 postfix 始终忽略每个发件人的配置并使用默认凭据发送邮件(上面的第三行/etc/postfix/sasl_passwd)。我多次检查了配置,甚至将它们与解决同一问题的各种博客文章中的配置进行了比较,但发现它们与我的配置大致相同。所以,如果我遗漏了什么,有人可以给我指出正确的方向吗?

非常感谢。

编辑

以下是我从以下地址发送邮件时进入 /var/log/mail.log 的内容[电子邮件保护]发送到另一个“模糊”的邮件地址,[电子邮件保护]

            Sep 11 17:28:24 host postfix/pickup[13235]: D0E71A4167D: uid=1000 from=<marwan>
    Sep 11 17:28:24 host postfix/cleanup[13259]: D0E71A4167D: message-id=<20120911152824.GX10881@host>
    Sep 11 17:28:24 host postfix/qmgr[13236]: D0E71A4167D: from=<marwan@host>, size=413, nrcpt=1 (queue active)
    Sep 11 17:28:25 host postfix/smtp[13263]: setting up TLS connection to smtp.gmail.com[173.194.70.108]:587
    Sep 11 17:28:25 host postfix/smtp[13263]: Verified TLS connection established to smtp.gmail.com[173.194.70.108]:587: TLSv1 with cipher RC4-SHA (128/128 bits)
    Sep 11 17:28:32 host postfix/smtp[13263]: D0E71A4167D: to=<[email protected]>, relay=smtp.gmail.com[173.194.70.108]:587, delay=7.8, delays=0.1/0/2.7/5, dsn=2.0.0, status=sent (250 2.0.0 OK 1347377285 25sm9995878bkx.9)
    Sep 11 17:28:32 host postfix/qmgr[13236]: D0E71A4167D: removed

至于 MAIL FROM 命令,当我增加 tls 日志记录级别时我注意到了它:

    Sep 11 18:26:53 host postfix/smtp[14287]: Write 42 chars: MAIL FROM:<marwan@host> SIZE=405 AUTH=<>

那么,MAIL FROM 命令是否应该包含[电子邮件保护]?如果是的话,我该怎么做才能实现这一点?

顺便说一句,我没有编辑最后一行;我的本地主机名是“host”,我的本地用户名是“marwan”。

再次感谢。

答案1

Postfix(实际上任何 MTA)都不关心 FROM 标头。sender_dependent_relayhost_maps
设置查看信封(SMTP MAIL FROM)地址。

请包含相关日志,显示当您尝试使用其中一个例外发送邮件时发生的情况。

答案2

在和文件[]中添加。isp.mailcomsasl_passwdsender_relay

例如。

/etc/postfix/sasl_passwd

[email protected]      [email protected]:passwd1
[email protected]      [email protected]:passwd2

[smtp.gmail.com]:587  [email protected]:passwd1

/etc/postfix/sender_relay

[email protected]      [smtp.gmail.com]:587
[email protected]      [smtp.gmail.com]:587

相关内容