1、下載、解壓 msmtp
先使用putty等工具登陸ssh
wget http://downloads.sourceforge.net/msmtp/msmtp-1.4.16.tar.bz2?modtime=1217206451&big_mirror=0tar jxvf msmtp-1.4.16.tar.bz2
最新版本參見:http://msmtp.sourceforge.net/download.html
2、安裝cd msmtp-1.4.16
./configure --prefix=/usr/local/msmtp
make
make install
3、配置msmtp賬號
切換到,cd /usr/local/msmtp
新建文件夾etc,
mkdir etcmkdir /var/msmtp
使用vi新建文件,輸入:vi /usr/local/msmtp/etc/msmtprc ,編輯內容如下:
# Set default values for all following accounts.defaults
logfile /var/log/msmtp/msmtp.log
# The SMTP server of the provider.
account mysmtp
# SMTP郵件服務器地址
host smtp.crsay.com
# 發送的郵件Email
from test@crsay.com
auth login
# 郵件服務器登錄賬號
user mysmtp@crsay.com
# 郵件服務器登陸密碼
password 123456
# Set a default account
account default : mysmtp
Esc,shift+:進入命令模式,輸入wq,保存退出。
由于password是明碼,所以我們需要修改此文件的權限
chmod 600 msmtprc4、測試
為了方便調用,增加個軟鏈接
ln -s /usr/bin/msmtp /usr/local/msmtp/bin/msmtp測試
msmtp youremail@test.com輸入任意字符,然后按Ctrl+D退出,查看郵件是否收到。
由于設置了日志,可以到 /var/log/msmtp/msmtp.log,查看日志,發信成功失敗都會有記錄。
通過上面的步驟就可以發郵件了,這里發郵件還是使用的是SMTP發的,msmtp相當于一個第三方工具。
在Linux系統內默認使用mail程序調用sendmail來發送郵件,而PHP程序里也是通過mail函數來發送,那么,我們再做如下更改,讓mail程序默認使用msmtp,如下:
在命令行和PHP程序內使用mail發送郵件的配置修改/etc/php.ini
更改sendmail路徑
#sendmail_path = /usr/sbin/sendmail -t -isendmail_path = /usr/bin/msmtp -t #msmtp1.4不需要-i參數
編輯/etc/mal.rc 新增一行:
set sendmail=/usr/bin/msmtp至此,在命令行使用mail程序和在php程序里發送郵件的準備就完成了。
在命令行里直接
mail -s "Mail Title" username@mail.com然后輸入郵件內容,按Ctrl+d退出即可
在php程序里使用
mail($to,$subject,$body,$header,"-a my-acct1")一個簡單的PHP發送示例
<?php$status = mail("***@***.com", //這里修改接收者的地址
"Test", //這是郵件的主題
"Hello n this test mail", //這是郵件的內容
"from: ****@****.com"); //這里修改成發送者的地址
if($status) {
echo "發送成功.";
} else {
echo "發送失敗";
}
?>
用mail發送的時候使用的root用戶,而是用PHP發送的時候一般是單獨的web服務帳戶如apache/noboday或nginx等,這些帳戶沒有讀取msmtp賬戶的權限,會導致無法讀取配置程序,從而發送失敗,解決辦法只能是另外指定單獨的配置文件
附1、Logwatch應用msmtp實例修改Logwatch配置文件:
vim /usr/share/logwatch/default.conf/logwatch.conf
LogDir = /var/logTmpDir = /var/cache/logwatch
MailTo = cracada@gmail.com
MailFrom = 1.2.3.4<syslog@mydomain.com>
Print = No #Save = /tmp/logwatch # Archives = Yes # Range = All Range = yesterday
Detail = 10 #Service = ftpd-messages
# Processes ftpd messages in /var/log/messages #Service = ftpd-xferlog
# Processes ftpd messages in /var/log/xferlog # Maybe you only wanted reports on PAM messages, then you would use: #Service = pam_pwdb
# PAM_pwdb messages - usually quite a bit #Service = pam
# General PAM messages... usually not many #LogFile = messages #mailer = "sendmail -t" mailer = "/usr/local/msmtp/bin/msmtp -t" #HostLimit = Yes
輸入logwatch,等執行完畢,去收信即可
如果收信有問題,可以查看msmtp的日志,不論是否發送成功都有記錄
附2、安裝配置mutt1、一般Linux都會默認安裝mutt,CentOS也不例外
可以使用which mutt查看mutt安裝的路徑,如果沒有安裝可以使用 # yum install mutt
2、編輯mutt配置文件
vi /etc/Muttrc ,編輯mutt的總設置,修改以下幾行
set from=“發送郵件地址”set sendmail=“/usr/local/msmtp/bin/msmtp”
set use_from=yes
set realname=“發件人”
set editor=“vi”
發件地址最好與msmtp設置的賬號相同,否則可能會出錯。
vi ~/.muttrc , 編輯根目錄下的設置
set envelope_from=yesset from=“發送郵件地址”
set realname=“發件人”
set use_from=yes
set charset = “utf-8″
set locale = “utf-8″
3、測試一下mutt是否有效
echo “測試測試” | mutt -s “測試” 測試郵件地址
echo “test” |mutt -s “my_first_test” 23335807@qq.com
下面就可以使用mutt進行郵件備份等工作了,結合cron使用,可以實現的功能相當多。