在过去的几天里,我尝试设置 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/hosts
[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,两者都有效
设置
REMOTE_SMTP_HELO_DATA = whatever.you.want
在/etc/exim4/exim4.conf.localmacros
. 自 4.69-10 起,Debian 软件包就支持它。来自/usr/share/doc/exim4/changelog.Debian.gz
:Debian 配置模板使用此宏来填充
helo_data
SMTP 传输选项。