Debian

將 Exim4 完整設置為 SMTP,以盡可能到達大多數收件箱(正確配置)

  • September 29, 2019

在過去的幾天裡,我嘗試設置 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

  • 允許通過直接設置 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 傳輸選項

引用自:https://unix.stackexchange.com/questions/543607