對于網(wǎng)站有郵件發(fā)送服務(wù)有需求的用戶來說,發(fā)送郵件一般有三種方式:自建郵件服務(wù)器、使用郵件提供服務(wù)商API方式和SMTP方式。自建郵件服務(wù)器需要占用比較多的內(nèi)存且需要額外進行比較多的設(shè)置,不適合少量郵件的用戶使用;API方式一般適合從程序開發(fā)開始就在程序中寫好,一般小用戶都使用開源程序;SMTP比較靈活可以使用郵件服務(wù)商或者個人郵箱的SMTP服務(wù),對于每天發(fā)送量不多使用SMTP相對來說也比較方便。大部分程序如Wordpress、Discuz X等常見的程序一般后臺都有SMTP的設(shè)置,設(shè)置好之后就可以通過SMTP發(fā)送郵件,但對于沒有SMTP相關(guān)設(shè)置的程序來說就無法正常發(fā)出郵件,今天我們主要就針對這種情況下使用msmtp調(diào)用SMTP服務(wù)器發(fā)送郵件。
1、msmtp簡介
msmtp是一款專門負責郵件發(fā)送的SMTP客戶端軟件,支持TLS/SSL/STARTTLS、多種認證方式、多用戶等。類似的程序其實很多如古老的mailx、s-nail、ssmtp等,msmtp比較活躍比較好用一些。
2、SMTP服務(wù)商的選擇
首推:阿里云的郵件推送,每天有200封免費的額度。
其次:SendGrid、SendinBlue等等都有免費發(fā)信額度。
再其次:Microsoft365或其他服務(wù)平臺提供的SMTP服務(wù)。
最后:個人郵箱的SMTP服務(wù)。
在使用上建議使用TLS加密或STARTTLS加密,不建議使用未加密的25端口進行發(fā)送郵件,首先未加密可能會存在泄露其次很多VPS或云服務(wù)商都已經(jīng)采取了默認封鎖25端口的設(shè)置。
3、msmtp安裝
CentOS/RHEL/Fedora/Alma/Rocky安裝方法:
1
2
|
yum -y install epel-release yum -y install msmtp |
Debian/Ubuntu/Deepin安裝方法:
1
|
apt-get install -y msmtp |
4、msmtp配置
配置文件位置:/etc/msmtprc 該文件不一定自動創(chuàng)建,下面以SSL/TLS加密為例:
defaults
tls on
#如果不是SSL/TLS加密方式改成off
tls_starttls off
#如果是STARTTLS加密改成on
tls_certcheck off
logfile /var/log/msmtp.log
account aliyun
#account后面為自定義的名字,隨便都可以,只要與最后面的account default:后面的一樣就可以
host smtpdm.aliyun.com
#host后為SMTP服務(wù)器地址
port 465
#端口TLS加密的一般為465,根據(jù)實際情況而定,不建議使用未加密的25端口,很多服務(wù)商會屏蔽該端口
auth plain
user xxx@vpser.net
from xxx@vpser.net
password 密碼
account default : aliyun
上面 xxx@vpser.net 為用戶名一般為郵箱地址,密碼一般為郵箱的登錄密碼,QQ、Gmail等一些SMTP為單獨的授權(quán)碼或密碼之類的。
保存完配置文件就可以進行測試,看一下郵件能否正常發(fā)送。
執(zhí)行:
echo "來自msmtp發(fā)出的測試郵件" | msmtp 自己的郵箱
郵箱地址用于測試看是否能正常收到郵件。
5、PHP郵件發(fā)送配置
以LNMP為例,php配置文件位置:/usr/local/php/etc/php.ini 編輯該文件,查找 sendmail_path
更改為:sendmail_path = /usr/bin/msmtp -t
如果前面有 ; 將該分號去掉,保存。
重啟php-fpm或Apache生效。
PHP上的測試就簡單多了,可以直接在LNMP的p.php 探針頁最下面"郵件發(fā)送檢測"選項下面填寫郵箱即可。
6、可能會遇到的問題
6.1、Ubuntu/Debian下可能會無法記錄日志,解決方法:
1
2
|
apt install -y apparmor-utils aa-disable /etc/apparmor.d/usr.bin.msmtp |
6.2、如在安裝使用過程中有問題可以在本文下方或者論壇留言。
>>轉(zhuǎn)載請注明出處:VPS偵探 本文鏈接地址:https://www.vpser.net/build/msmtp-smtp-mail-server.html