如果我问的问题已经得到解答,我深表歉意,但我的问题实际上并不是我还没有找到答案。事实上,我已经找到了六种不同的“解决方案”,尝试了所有方案,以各种组合,但始终没有成功。
目标
我要做的就是更改所有从以下地址发送的电子邮件的信封“发件人”地址[电子邮件保护]到[电子邮件保护], 总是。
我已经做了什么
我在 CentOS 5.5 上运行 Apache、PHP 和 sendmail,[电子邮件保护]。我们的 SMTP 服务器位于 192.168.0.4。该域的电子邮件帐户均位于@域名.org。
我已经成功设置了“智能主机”,使用此行发送邮件文件:
define(`SMART_HOST', `192.168.0.4')dnl
然后我设置了伪装,希望这能解决这个问题。我在 .mc 文件中有以下内容:
FEATURE(`masquerade_entire_domain')dnl
FEATURE(`masquerade_envelope')dnl
FEATURE(`allmasquerade')dnl
MASQUERADE_AS(`domain.org')dnl
MASQUERADE_DOMAIN(`domain.org.')dnl
MASQUERADE_DOMAIN(`localhost.localdomain.')dnl
这会重写“收件人”地址,但不会重写“发件人”地址。从命令行测试:
sendmail -v [email protected]
始终显示本地用户(在本例中根或我的本地用户帐户)。
我读到过“sendmail”命令有时会绕过伪装。然而,使用“mail”命令也会产生同样的结果。
此后,我探索过几种“解决方案”,包括:
- 邮寄表
- 虚拟用户表
- FEATURE(`accept_unresolvable_domains')dnl
- LOCAL_DOMAIN(`localhost.localdomain')dnl
- FEATURE(`genericstable')dnl
- /etc/邮件/访问文件
- /etc/mail/本地主机名文件
- /etc/mail/受信任用户文件
一切都没有影响。
我尝试过的最后一件事
因此,我决定换个方向,尝试通过 PHP 设置信封“发件人”地址,使用以下配置之一:/etc/php.ini或添加-Fmail() 函数的参数或发送邮件命令。
如果我运行这个命令:
sendmail -v -f [email protected] [email protected]
我收到此错误/var/log/邮件日志:
Mar 30 08:56:16 localhost sendmail[24022]: p2UCuE8w024022: [email protected], size=5, class=0, nrcpts=1, msgid=<[email protected]>, relay=user@localhost
Mar 30 08:56:19 localhost sendmail[24022]: p2UCuE8w024022: [email protected], [email protected] (500/502), delay=00:00:05, xdelay=00:00:03, mailer=relay, pri=30005, relay=[192.168.0.4] [192.168.0.4], dsn=5.1.1, stat=User unknown
Mar 30 08:56:19 localhost sendmail[24022]: p2UCuE8w024022: p2UCuE8x024022: DSN: User unknown
Mar 30 08:56:23 localhost sendmail[24022]: p2UCuE8x024022: [email protected], delay=00:00:04, xdelay=00:00:04, mailer=relay, pri=31029, relay=[192.168.0.4] [192.168.0.4], dsn=2.0.0, stat=Sent (Ok: queued as B5E2E40E0A2)
这基本上是一个“用户未知” 550 错误。
帮助
请帮忙。我需要更改什么?我应该从 sendmail.mc 文件重新开始吗?它包含大量配置选项,经过几天的尝试。为什么通过命令行更改信封“发件人”地址会产生“用户未知”错误?
答案1
我已经弄清楚了如何使用 -f 参数。我开始从头开始修改 sendmail.mc,只包含了 MASQUERADE_AS 属性。
原来是我们网络的防火墙拒绝了。我在防火墙中添加了一个例外。叹...
编辑:我已使用 POSTFIX 解决了这个问题。忘记 sendmail...