我在 Centos 服务器上使用 Sendmail 为 PHP 脚本发送电子邮件,但问题是邮件被传送到机器上的本地邮箱,而不是域的 MX 记录中指定的内容 - 实际上指向另一台机器我用于电子邮件。
我希望 sendmail 不尝试为机器设置的域在本地传递邮件,是否有一种简单的方法可以禁用本地传递?
该域不在本地主机名文件中。
我已经做了很多谷歌搜索,我看过:
但要么没有答案,要么不合适。
我不想中继到另一台服务器,我只想发送邮件而不管域。
提供一个例子:
我有两台服务器,一台是位于 mail.example.com 的邮件服务器和一台位于 example.com 的 Web 服务器,当我在 Web 服务器上使用 smtp 服务时,它当前将邮件路由到 example.com 上的本地邮箱,但是它应该转到mail.example.com上的邮箱
sendmail -bt 的输出返回:
地址测试模式(规则集 3 不会自动调用) 进入 > 3,0 info@example.com 规范输入: info @example 。电脑 Canonify2 输入:信息 Canonify2 返回:信息 规范返回:信息 解析输入:信息 Parse0 输入:信息 Parse0 返回:信息 ParseLocal 输入:信息 ParseLocal 返回:信息 Parse1 输入:信息 Parse1 返回:$# 本地 $:信息 解析返回:$# 本地 $:信息
Paw*_*cki 39
我做了什么来禁用本地交付。我将使用 example.com 域。
要求:
脚步:
vim /etc/mail/sendmail.mc
Run Code Online (Sandbox Code Playgroud)
在末尾:
define(`MAIL_HUB', `example.com.')dnl
define(`LOCAL_RELAY', `example.com.')dnl
Run Code Online (Sandbox Code Playgroud)
进而:
sendmailconfig (or /etc/mail/make depending on your distro)
service sendmail restart
Run Code Online (Sandbox Code Playgroud)
测试:
echo -e "To: user@example.com\nSubject: Test\nTest\n" | sendmail -bm -t -v
echo -e "To: user\nSubject: Test\nTest\n" | sendmail -bm -t -v
Run Code Online (Sandbox Code Playgroud)
您应该看到它连接到谷歌服务器,然后您应该看到您的邮件被发送到您的谷歌收件箱。
这可能不是您正在寻找的解决方案,但如果您的问题是“admin”或“root”用户收到大量电子邮件和一个巨大的邮箱,您可能希望考虑设置一个 cron 作业来清除邮箱每周、每天等外出。
我们有几台 CentOS 服务器存在此问题,但问题是我们希望有时能够阅读邮件,因为它有时可以帮助诊断各种问题。
解决方案是简单地执行 cron 作业并偶尔擦拭一次盒子。
如果我们发现问题...我们会(暂时)注释掉 cron 作业并阅读日志和电子邮件以获取线索。
只是一个想法...以及一个快速/简单的解决方案。
如果没有,请查看 sendmail.mc 文件并进行相应修改。
快速更新:
这并不完全是您所要求的,但可能会给您一些想法并帮助您了解一些事情:
http://www.pettingers.org/code/sendmail-local.html
归档时间: |
|
查看次数: |
49669 次 |
最近记录: |