搭建 Exim4 來去除 Google Apps 發送郵件時提示以某某的身份發送的問題

之前為了防止各個服務商沒事兒洩漏我 E-mail 地址,我每次註冊服務時填寫的註冊郵箱地址都是 **provider-name@xswan.net** 這種形式的,本來這樣沒什麼問題,但是 … 要回覆的時候問題就來了。

首先我們把這個郵箱添加到 Send mail as 裡去,然後 … 嗯發郵件的時候,就會出現這樣討厭的提示了:

06$TKM1B6LFD8R2O~_NXFYY.jpg

在 Google Apps 的後臺找了半天也沒發現能重寫 Envelope-From 這個頭的地方,那就搭建一個 Exim4 好啦~

這裡我使用的是 DigitalOcean 的 VPS 來搭建 Exim4,主要原因是:

  1. 可以設置 PTR,郵件服務器不做反向解析的話到達率可是很低的喲
  2. 性價比高,5 USD 還 SSD 你到哪兒找去(LowEndBox 什麼的地方除外)

操作系統我使用的是 Debian 7 x64,安裝步驟如下:

1. 安裝 Exim4

1
2
3
apt-get update
apt-get -y upgrade
apt-get -y install mailutils exim4-daemon-light

2. 配置 Exim4
把以下內容覆蓋到 /etc/exim4/update-exim4.conf.conf 然後運行 dpkg-reconfigure exim4 一路 Next 即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
dc_eximconfig_configtype='internet'
dc_other_hostnames=''
dc_local_interfaces=''
dc_readhost=''
dc_relay_domains=''
dc_minimaldns='true'
dc_relay_nets='216.239.32.0/19;64.233.160.0/19;66.249.80.0/20;72.14.192.0/18;209.85.128.0/17;66.102.0.0/20;74.125.0.0/16;64.18.0.0/20;207.126.144.0/20;173.194.0.0/16'
dc_smarthost=''
CFILEMODE='644'
dc_use_split_config='true'
dc_hide_mailname=''
dc_mailname_in_oh='true'
dc_localdelivery='mail_spool'

上面的 dc_relay_nets 裡是 Google 的 IP 段,獲取方法在 這裡

3. 配置 Exim4 重寫規則
將以下內容寫入 /etc/exim4/conf.d/rewrite/32\_exim4-rewrite-envelope-from

1
a@loli.vg $h_from F

`a@loli.vg` 是我的郵箱地址,實際操作中請按換成自己的嗯。。

修改完成後重啟 exim4:

1
invoke-rc.d exim4 restart

4. 安全加固
其實就是用 iptables 把來自非 Google 的 IP 屏蔽掉而已,雖然第二步的 dc_relay_nets 已經處理了,但是我覺得拒絕投遞的日誌出現也很煩,那就在 iptables 裡再屏蔽一次好了 :-)

1
2
3
4
5
6
7
8
9
10
11
12
iptables -A INPUT -s 216.239.32.0/19 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A INPUT -s 64.233.160.0/19 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A INPUT -s 66.249.80.0/20 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A INPUT -s 72.14.192.0/18 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A INPUT -s 209.85.128.0/17 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A INPUT -s 66.249.80.0/20 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A INPUT -s 66.102.0.0/20 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A INPUT -s 74.125.0.0/16 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A INPUT -s 66.249.80.0/20 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A INPUT -s 207.126.144.0/20 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A INPUT -s 173.194.0.0/16 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 25 -j DROP

5. 修改域名 A 記錄和 SPF 記錄
首先添加一條 _spf.moease.org,記錄類型為 SPF(沒有 SPF 的選 TXT):
"v=spf1 a:mx1.moease.org ip4:198.211.101.101 ?all"

這裡的 mx1.moease.org 就是我運行 Exim4 的機器的 Hostname,198.211.101.101 是它的 IP 地址。

然後將 moease.org 的 SPF 記錄修改為:
"v=spf1 include:_spf.moease.org include:_spf.google.com -all"

關於 SPF 記錄的更多知識可以在小允的 Blog 裡找到,這裡就不再敘述了。

6. 修改 Google Apps 郵件發送設置
打開 Google Apps 控制面板,依次打開:
Google Apps > Gmail > Advanced Settings

在打開的頁面裡找到 Outbound gateway,填上郵件服務器的地址保存即可,我這裡填寫的是 mx1.moease.org
(沒有的請先升級到付費版本)

好啦,完結撒花~