![配置 Exim 以发送到内部和外部地址](https://linux22.com/image/654410/%E9%85%8D%E7%BD%AE%20Exim%20%E4%BB%A5%E5%8F%91%E9%80%81%E5%88%B0%E5%86%85%E9%83%A8%E5%92%8C%E5%A4%96%E9%83%A8%E5%9C%B0%E5%9D%80.png)
我接手了一个显然使用 Exim 作为其 MTA 的网站。假设我们可以通过以下方式访问该网站:
在 Example Corp. 工作的用户注意到他们没有收到电子邮件当 PHP Web 应用程序尝试向以下地址发送邮件时:
问题
这SPF 记录当服务器从example.com 的主机名。但是,当我们将 example.com 作为主机名时,我们无法向 example.com 上的任何人发送电子邮件。
我更改了服务器上的主机名,但现在它不适用于现有的 SPF 记录(详情如下)。
我想我需要有关配置主机名或 Exim 的建议。
背景
发送到 GMail、Yahoo、Mailinator 等外部地址的电子邮件都顺利通过。我使用 Mailinator 来测试电子邮件,因为您可以向任何地址发送电子邮件,而无需创建完整帐户。我使用这样的语法进行了测试。
这次测试将会成功。
echo "This is message body." | mail -s "SMTP Test 1" -r "[email protected]" [email protected]
这次测试将会失败。
echo "This is message body." | mail -s "SMTP Test 1" -r "[email protected]" [email protected]
可以使用地址测试选项进行一些简单的路由测试。此测试将会成功。
exim -bt [email protected]
[email protected]
router = dnslookup, transport = remote_smtp
host mail.mailinator.com [2600:3c03::f03c:91ff:fe50:caa7] MX=10
host mail.mailinator.com [23.239.11.30] MX=10
这次测试将会失败。
exim -bt [email protected]
[email protected] is undeliverable
这篇文章很有帮助,为我指明了主机名设置的方向。 http://jblevins.org/log/主机名
我意识到公共 DNS 中有一个名为“store.example.com”的条目,它指向正确的 IP 地址。我将其输入为主机名。
sudo 主机名 store.example.com
确保 store.example.com 位于网络文件内。这应确保主机名在重启后保持不变。
sudo nano /etc/sysconfig/network
sudo service exim restart
问题是,现在 Google 抱怨缺少 SPF 记录。
已接收-Spf:无(google.com:[电子邮件保护]未指定允许的发送方主机)client-ip=xxx.xxx.xxx.xxx;
我知道我可以创建一个 SPF 记录,但使用现有的 example.com 记录会更简单。当这是主机名时,GMail 中的标头显示:
Received-Spf:通过(google.com:域名[电子邮件保护]指定 xxx.xxx.xxx.xxx 为允许的发送者)client-ip=xxx.xxx.xxx.xxx;
服务器环境
CentOS 版本 6.6
ls /etc/alternatives/ -l | grep mta
lrwxrwxrwx. 1 root root 23 Feb 23 09:28 mta -> /usr/sbin/sendmail.exim
lrwxrwxrwx. 1 root root 19 Feb 23 09:28 mta-mailq -> /usr/bin/mailq.exim
lrwxrwxrwx. 1 root root 29 Feb 23 09:28 mta-mailqman -> /usr/share/man/man8/exim.8.gz
lrwxrwxrwx. 1 root root 24 Feb 23 09:28 mta-newaliases -> /usr/bin/newaliases.exim
lrwxrwxrwx. 1 root root 15 Feb 23 09:28 mta-pam -> /etc/pam.d/exim
lrwxrwxrwx. 1 root root 19 Feb 23 09:28 mta-rmail -> /usr/bin/rmail.exim
lrwxrwxrwx. 1 root root 19 Feb 23 09:28 mta-rsmtp -> /usr/bin/rsmtp.exim
lrwxrwxrwx. 1 root root 18 Feb 23 09:28 mta-runq -> /usr/bin/runq.exim
lrwxrwxrwx. 1 root root 22 Feb 23 09:28 mta-sendmail -> /usr/lib/sendmail.exim
exim -bV
Exim version 4.72 #1 built 10-Oct-2014 09:23:33
Copyright (c) University of Cambridge, 1995 - 2007
Berkeley DB: Berkeley DB 4.7.25: (September 9, 2013)
Support for: crypteq iconv() IPv6 PAM Perl Expand_dlfunc TCPwrappers OpenSSL Content_Scanning DKIM Old_Demime
Lookups (built-in): lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmnz dnsdb dsearch ldap ldapdn ldapm nis nis0 nisplus passwd sqlite
Authenticators: cram_md5 cyrus_sasl dovecot plaintext spa
Routers: accept dnslookup ipliteral manualroute queryprogram redirect
Transports: appendfile/maildir/mailstore/mbx autoreply lmtp pipe smtp
Fixed never_users: 0
Size of off_t: 8
OpenSSL compile-time version: OpenSSL 1.0.1e-fips 11 Feb 2013
OpenSSL runtime version: OpenSSL 1.0.1e-fips 11 Feb 2013
Configuration file is /etc/exim/exim.conf
答案1
我猜测 example.com 的邮件需要转发到该域的“真实”邮件服务器,或者也许所有邮件都应该转发到“智能主机”。
我不知道 Centos 的默认 exim 包是如何配置的(如果有的话)... 你应该把配置放在某处,这样我才能准确地说出需要更改什么。基本上:
确保 example.com 未在 local_domains 中列出(检查
dnslookup
路由器,或至少检查配置中的第一个路由器之一(路由器按顺序处理,第一个匹配的路由器获胜)。搜索
smarthost
是否有这样的配置;您需要以某种方式将真实的邮件服务器的地址放入其中。您也可以将其作为第一个路由器:
智能主机:驱动程序 = manualroute 域 = * 传输 = remote_smtp route_data = real.mailserver.example.com
看进出口银行有关默认配置文件的描述。