sendmail
使用本機寄信的套件
安裝
sudo apt-get install sendmail
測試
sendmail xxx@example.com
Subject: Test from example.com
Hello~anyone!
.
Troubleshootings
如果網站 hostname 有改過, 會發現寄信很慢, 甚至要一分鐘以上
在 /etc/hosts
的 127.0.1.1
加上以下兩個 hostname :
127.0.1.1 ubuntu 106-185-47-26 106-185-47-26.localhost
如果寄到
sendmail xxx@example.com
Subject: Test from example.com
Hello~anyone!
.
就會得到寄不出信的錯誤
/home/jxxx/dead.letter... Saved message in /home/jxxx/dead.letter
/var/log/mail.log
也會報錯
sm-mta[17354]: s6T7p65B017354: Milter (opendkim): error connecting to filter: Connection refused by localhost
會有這樣的訊息, 是因為主機認為是寄到 localhost 的, 所以就不會寄出
解決方法是把 hostname 改掉
echo "newHostname" > /etc/hostname
hostname -F /etc/hostname
/etc/hosts
記得也要設對 :
127.0.0.1 localhost
127.0.1.1 newHostname newHostname.localhost
然候就能順利寄信了
如果找不出問題
可以用 sendmail 指令寄信並觀查 /var/log/mail.log
出現什麼
使用 mailgun
mailgun是一個可以幫你寄送 email 的服務, 你或許不想用本機的寄,
可能考量到容易被當垃圾信或是不希望 server 在寄信時被 block 住,
那麼你可以考慮用 mailgun, 它的好處有 :
- 建立在 HTTP 協定, 所有 API 都是 RESTful 的, 白話點就是用 curl 就能寄信了
- 提供主流語言的 library, 使用 Package management 裝完就可以直接用了
- 免費 10,000 封 email 幫你寄, 不需預綁信用卡
- Custom domain
使用自己的 domain
點選 Add New Domain
, 輸入 example.com
, 接著以下步驟照著他頁面上的指示設定
登入你的 domain 代管網站 (ex: godaddy), 到 DNS ZONE 那設定
CName (Alias)
Host Points To
---------------------
email mailgun.org
MX (Mail Exchanger)
Priority Host Points To
-----------------------------
10 @ mxa.mailgun.org
10 @ mxb.mailgun.org
TXT (Text)
Host TXT Value
-------------------------
@ v=spf1 include:mailgun.org ~all
k1._domainkey k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCcRvHyhPC9tltbqtKqUCNxJ39l5QAqQm7NWipFV40XG4KF2WVm0brd6U360VDng97vzlHBkEBS+chpa11L+grAhxFiGewFYRQ3rATl90eA1NKpGSBlm4yqig0P+fo++1j1EiA2Gn3KllTdPnVrWsRLaPN+***************cKQIDAQAB
接下來等 mailgun 那邊都生效就完成了, MX 會稍微比較久一點才會 active
Test
使用 CURL 寄信測試, 將以下指令中的這行 -F to=your_email@gmail.com
改成你 gamil 帳號
curl -s --user 'api:key-7******************************5' \
https://api.mailgun.net/v3/example.com/messages \
-F from='Contact <contact2@example.com>' \
-F to=test@gmail.com \
-F subject='Hello' \
-F text='Testing some Mailgun awesomness!'
如果收到以下回覆代表 mailgun 回覆成功, 到 gmail 信箱查看信是否成功收到
{
"id": "<20150520110053.16306.14890@example.com>",
"message": "Queued. Thank you."
}
可以到 https://mailgun.com/app/logs/<your domain>
下查看寄信的狀況
將 GoDaddy 購買的 domain 綁到自己的 Gmail
gmail 必須為企業版, 一個月一個帳號 5 美金
-
先到 google apps for work 註冊
-
為 GoDaddy 代管的網域建立 MX 記錄, 登入後設定 DNS
在 MX 紀錄那把預設的資料刪除, 加上以下設定
Priority Host Points To
10 @ ASPMX.L.GOOGLE.COM
20 @ ALT1.ASPMX.L.GOOGLE.COM
30 @ ALT2.ASPMX.L.GOOGLE.COM
40 @ ASPMX2.GOOGLEMAIL.COM
50 @ ASPMX3.GOOGLEMAIL.COM
如果有用 mailgun 或他服務寄信直接刪掉之前 MX, 新增 Gmail MX 就好了, mailgun 依然可以寄信
簡易方式避免被分到垃圾郵件
-
使用 Gmail SMTP 寄信, 但一天最多寄 100 封 (Web UI 的話一天是 500 封)
-
設定 From
Reply-To
, 並且確認 server 與 domain 是在同一個地方
From: Robotrobot@example.com
Reply-To: contact@example.com
ref :