在过去的几天里,我尝试设置 Exim4 来处理从 Web 应用程序发送的所有邮件。
它似乎有效,但我还没有找到如何对将与 EHLO 一起发送的主机名进行硬编码? (我不想设置/etc/hostname
)
已找到配置中提到的变量MAIN_HARDCODE_PRIMARY_HOSTNAME
,但尚未找到设置它的方法。这个变量是设置主机名的最简单方法还是有更好的方法?
以下是完整的安装/配置。我错过了什么吗?
Exim version 4.92
Debian Buster 10
安装
apt-get install exim4-daemon-light
配置 Exim4
dpkg-reconfigure exim4-config
Type: internet site
FQDN: smtp.mydomain.com
SMTP listener: (empty)
Mail destinations: (empty)
Domain relay: (empty)
Machine relay: (empty)
DNS queries minimal: No
Delivery method: Maildir
Split conf files: No
启用 TLS 并生成证书
printf "MAIN_TLS_ENABLE = true\n" >> /etc/exim4/exim4.conf.localmacros
/usr/share/doc/exim4-base/examples/exim-gencert
检查反向 DNS(IP -> smtp.mydomain.com)
https://mxtoolbox.com/ReverseLookup.aspx
获取 IPv6
ip -6 addr | grep inet6 | awk -F '[ \t]+|/' '{print $3}' | grep -v ^::1 | grep -v ^fe80
/etc/主机
[ipv4] smtp.mydomain.com
[ipv6] smtp.mydomain.com
取消注释“/etc/exim4/exim4.conf.template”
# plain_server:
# driver = plaintext
# public_name = PLAIN
# server_condition = "${if crypteq{$3}{${extract{1}{:}{${lookup{$2}lsearch{CON$
# server_set_id = $2
# server_prompts = :
# .ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS
# server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}}
# .endif
添加用户/密码 -> '/etc/exim4/passwd'
/usr/share/doc/exim4-base/examples/exim-adduser
DKIM/SPF
我在服务器上设置了 DKIM 密钥,并在 DNS 上设置了 DKIM/SPF,两者都有效
答案1
设置REMOTE_SMTP_HELO_DATA = whatever.you.want
在/etc/exim4/exim4.conf.localmacros
.从 4.69-10 开始,Debian 软件包就支持它。从/usr/share/doc/exim4/changelog.Debian.gz
:
- 允许通过直接设置 REMOTE_SMTP_HELO_DATA 宏来设置传出 smtp helo/ehlo。以前,这只是应该用作 REMOTE_SMTP_HELO_FROM_DNS 的辅助宏。 REMOTE_SMTP_HELO_FROM_DNS 覆盖手动 REMOTE_SMTP_HELO_DATA 数据设置。关闭:#514113
Debian 配置模板使用此宏来填充helo_data
SMTP 传输选项。