CentOS下使用MSMTP代替Sendmail發送郵件

安裝配置msmtp

一、下載、解壓 msmtp

先使用putty等工具登錄ssh php

wget http://downloads.sourceforge.net/msmtp/msmtp-1.4.16.tar.bz2?modtime=1217206451&big_mirror=0

tar jxvf msmtp-1.4.16.tar.bz2

最新版本參見:http://msmtp.sourceforge.net/download.html html

二、安裝

cd msmtp-1.4.16
./configure --prefix=/usr/local/msmtp
make
make install

三、配置msmtp帳號

切換到,cd /usr/local/msmtp nginx

新建文件夾etc, web

mkdir etc
mkdir /var/msmtp

使用vi新建文件,輸入:vi /usr/local/msmtp/etc/msmtprc ,編輯內容以下: apache

# 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,保存退出。 vim

因爲password是明碼,因此咱們須要修改此文件的權限 服務器

chmod 600 msmtprc

四、測試

爲了方便調用,增長個軟連接 dom

ln  -s /usr/bin/msmtp /usr/local/msmtp/bin/msmtp

測試 ssh

msmtp youremail@test.com

輸入任意字符,而後按Ctrl+D退出,查看郵件是否收到。 ide

因爲設置了日誌,能夠到 /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 -i
sendmail_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帳戶的權限,會致使沒法讀取配置程序,從而發送失敗,解決辦法只能是另外指定單獨的配置文件

附一、Logwatch應用msmtp實例

修改Logwatch配置文件:

vim /usr/share/logwatch/default.conf/logwatch.conf

LogDir = /var/log
TmpDir = /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的日誌,不管是否發送成功都有記錄

附二、安裝配置mutt

一、通常Linux都會默認安裝mutt,CentOS也不例外

能夠使用which mutt查看mutt安裝的路徑,若是沒有安裝能夠使用 # yum install mutt

二、編輯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=yes   
set from=「發送郵件地址」  
set realname=「發件人」  
set use_from=yes
set charset = 「utf-8″
set locale = 「utf-8″

三、測試一下mutt是否有效

echo 「測試測試」 | mutt -s 「測試」 測試郵件地址

echo 「test」 |mutt -s 「my_first_test」 23335807@qq.com

下面就能夠使用mutt進行郵件備份等工做了,結合cron使用,能夠實現的功能至關多。

相關文章
相關標籤/搜索