在Ubuntu 16.04上配置msmtp
這篇文章是在我之前的博客中發表過的在 Ubuntu 16.04 上配置 MSMTP 的一個副本。我再次發表是為了后續,我并不知道它是否能在更高版本上工作。由于我沒有再托管自己的 Ubuntu/MSMTP 服務器了,所以我現在看不到有需要更新的地方,但是如果我需要重新設置,我會創建一個更新的帖子!無論如何,這是我現有的。
我之前寫了一篇在 Ubuntu 12.04 上配置 msmtp 的文章,但是正如我在之前的文章中暗示的那樣,當我升級到 Ubuntu 16.04 后出現了一些問題。接下來的內容基本上是一樣的,但 16.04 有一些小的更新。和以前一樣,這里假定你使用 Apache 作為 Web 服務器,但是我相信如果你選擇其他的 Web 服務器,也應該相差不多。
我使用 msmtp 發送來自這個博客的郵件倆通知我評論和更新等。這里我會記錄如何配置它通過 Google Apps 帳戶發送電子郵件,雖然這應該與標準的 Google 帳戶一樣。
首先,我們需要安裝 3 個軟件包:
sudo apt-get install msmtp msmtp-mta ca-certificates
安裝完成后,就需要一個默認配置。默認情況下,msmtp 會在 /etc/msmtprc
中查找,所以我使用 vim
創建了這個文件,盡管任何文本編輯器都可以做到這一點。這個文件看起來像這樣:
# Set defaults.
defaults
# Enable or disable TLS/SSL encryption.
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
# Setup WP account's settings.
account GMAIL
host smtp.gmail.com
port 587
auth login
user YOUR USERNAME
password YOUR PASSWORD
from FROM@ADDRESS
logfile /var/log/msmtp/msmtp.log
account default :
任何大寫選項都是需要替換為你特定的配置。日志文件是一個例外,當然你也可以將活動/警告/錯誤放在任何你想要的地方。
文件保存后,我們將更新上述配置文件的權限 ,如果該文件的權限過于開放,msmtp 將不會運行,并且創建日志文件的目錄。
sudo mkdir /var/log/msmtp
sudo chown -R www-data:adm /var/log/msmtp
sudo chmod 0600 /etc/msmtprc
接下來,我選擇為 msmtp 日志配置 logrotate,以確保日志文件不會太大并讓日志目錄更加整潔。為此,我們創建 /etc/logrotate.d/msmtp
并使用按以下內容配置。請注意,這是可選的,你可以選擇不這樣做,或者你可以選擇以不同方式配置日志。
/var/log/msmtp/*.log {
rotate 12
monthly
compress
missingok
notifempty
}
現在配置了日志,我們需要通過編輯 /etc/php/7.0/apache2/php.ini
告訴 PHP 使用 msmtp,并將 sendmail 路徑從
sendmail_path =
變成
sendmail_path = "/usr/bin/msmtp -C /etc/msmtprc -a -t"
這里我遇到了一個問題,即使我指定了帳戶名稱,但是當我測試它時,它并沒有正確發送電子郵件。這就是為什么 account default :
這行被放在 msmtp 配置文件的末尾。要測試配置,請確保 PHP 文件已保存并運行 sudo service apache2 restart
,然后運行 php -a
并執行以下命令
mail ('personal@email.com', 'Test Subject', 'Test body text');
exit();
此時發生的任何錯誤都將顯示在輸出中,因此錯誤診斷會相對容易。如果一切順利,你現在應該可以使用 PHP sendmail(至少 WordPress 可以)中用 Gmail(或 Google Apps)從 Ubuntu 服務器發送電子郵件。
我沒有說這是最安全的配置,所以當你看到并且意識要這個非常不安全,或者有其他嚴重的錯誤,請讓我知道,我會相應地更新。