標籤:

Exim 的配置

【遷移】Exim 的配置

Debian 默認安裝的 exim4-daemon-light,不支持 ldap, sasl, perl interpreter, mysql/postgresql/sqlite 訪問,需要支持這些的話得安裝 exim4-daemon-heavy。

1. exim4 配置成 smarthost 模式,通過 smtp 或者 fetchmail 收信

通常意義上,smarthost 是用來為內部 smtp server 往外轉發郵件的,並不負責從外界往內部轉發郵件,按照前面郵件系統的設計,這裡的"smarthost" 叫 smtp relay 或者 smtp gateway 更好一點,它作為外部 smtp 伺服器和內部 smtp 服務之間的橋樑,不用暴露內部的kerberos+slapd 認證系統以及內部 smtp 伺服器,同時,由於clamav-daemon 以及 spamd 都有不少安全隱患,可以把它們部署到smtp relay 上,減少對內部 smtp 伺服器的威脅。

2. clamav, spamassassin 支持

配置這個只是為了熟悉一下流程。配置很簡單,修改/etc/exim4/conf.d/main/02_exim4-config_options 打開av_scanner 選項。spamd_address 可以用默認設置。然後修改 /etc/exim4/conf.d/acl/40_exim4-config_check_data打開 malware 檢測和 spam 評分。

3. service auth

exim4 支持 cyrus sasl 和 dovecot sasl 認證,如果使用前者,有兩種方式:

(1) 直接使用 cyrus sasl 庫,由於 exim 以 Debian-exim 身份 運行無法讀取 /etc/krb5.keytab,需要單獨配置 /etc/smtp.keytab, 而由於 bugs.debian.org/cgi-bin, 需要修改 /etc/default/exim4 設置 KRB5_KTNAME 環境變數。

sasl 的配置文件查找目錄可以如下方式查出:

$ strings /usr/lib/i386-linux-gnu/libsasl2.so.2.0.25 |grep /sasl
/etc/sasl2:/etc/sasl:/usr/lib/i386-linux-gnu/sasl2:/usr/lib/sasl2 /usr/lib/i386-linux-gnu/sasl2:/usr/lib/sasl2

(2) 使用 saslauthd(在 sasl2-bin 包中),此服務以 root 身份運行, 可以直接讀取 /etc/krb5.keytab。但似乎 Exim 的 saslauthd 特性 僅支持基於用戶名密碼的認證。

如果使用 dovecot sasl 認證,只能通過 socket 與 dovecot 通訊認證,好處是 keytab 是 dovecot 讀取,在 exim 方不用配置keytab。

// SASL 還有 GNU SASL 實現,但 Exim 不支持。

$ kinit
$ gsasl --smtp --verbose smtp.corp.example.com

可以驗證 GSSAPI 認證是否成功,注意 hostname 必需是服務端 IP 反解得到的域名在 keytab 里有對應條目,並且 keytab 可以被 Exim 或者Dovecot 讀取。

4. 檢查 sender 和 From 是否一致

除了 bounce 郵件 sender 為空,正常郵件應該兩者一致,發郵件方不能偽造其它賬戶發出郵件。

// Exim 的 spec 太長了,還不知道怎麼配置。。。

5. 查詢本域收件人是否存在,不存在時在發送階段就報錯,不要用 bounce message 通知

在這個 IT 基礎設施設計中,實際上沒有虛擬用戶,slapd中儲存的用戶都是系統用戶,所以有兩種方法驗證收件人是否存在,一是通過 nscd + nslcd +libnss-ldapd 查詢slapd,二是直接查詢 slapd,後者需要在 exim4 端配置krb5keytab 以及 k5start 以做 LDAP SASL bind 所需的GSSAPI 認證(Kerberos里服務之間認證真麻煩,發行版自帶的服務軟體的默認配置大多沒考慮 k5start的問題),而最悲劇的是,Exim4 自身不支持 LDAP SASL bind(見 Exim 源碼src/lookups/ldap.c)。

// Exim 的 spec 太長了,還不知道怎麼配置。。。

6. 通過 lmtp 轉發給 dotcot-lmtpd

這個的配置很簡單的,Exim 的手冊 Dovecot 認證章節以及 Exim/Dovecot上的 wiki 都有例子。

推薦閱讀:

TAG:Linux |