用msmtp代替sendmail發郵件

背景: Sendmail 無法使用外部smtp發郵件,很多程序又標配有sendmail,有些外部smtp比如網易的免費企業郵箱對賬號發信量有限制,所以使用msmtp代替sendmail,既可以不用改動程序,又可以使用外部smtp,而且可以用腳本實現多個賬號隨機發送,增加發信量。

1.          下載安裝msmtp

  http://download.chinaunix.net/download.php?id=33752&ResourceID=7048

   yum remove openssl 需要opsenssl

tar jxvf msmtp-1.4.26.tar.bz2

cd msmtp-1.4.26

./configure --prefix=/usr/local/msmtp

make && make install

2.          手動建立配置文件,輸入外部smtp地址

mkdir –p /usr/local/msmtp/etc

vi /usr/local/msmtp/etc/msmtprc

添加以下內容

account default

host smtp.qiye.163.com

port 25

from [email protected]

auth login

tls off

user [email protected]

password 111111

logfile /var/log/mmlog

 

3.          測試郵件

usr/local/msmtp/bin/msmtp [email protected]
  hellotest
  ctrl d

cat /usr/local/msmtp/msmtp.log 看看有沒有成功。
  然後再到QQ郵箱中,看看信收到沒有

 

4.         測試方法二:

增加環境變量echo set sendmail=\"/usr/local/msmtp/bin/msmtp\" > /root/.mailrc

測試郵件echo "this is a test mail" | mail –v -s "test mail" [email protected]

 

5.         PHP程序中使用msmtp

方法1:修改類函數

比如phpmailer中的class.phpmailer.php,下面一行就可以了

  //public $Sendmail          = '/usr/sbin/sendmail';

public $Sendmail          = '/usr/local/msmtp/bin/msmtp';

方法2:對於不能修改類函數的可以使用軟鏈接方式

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

這時sendmail關閉也可以發送郵件

6.          使用多個賬號隨機發送的腳本

vi usr/local/msmtp/etc/randmail.sh

#!/bin/bash

while true;do

A=$[$RANDOM%3]

if [ "$A" -eq 0 ]

then   sed -i '4c\from [email protected]' msmtprc && sed -i '7c\user [email protected]' msmtprc

elif [ "$A" -eq 1 ]

then   sed -i '4c\from [email protected]' msmtprc && sed -i '7c\user [email protected]' msmtprc

elif [ "$A" -eq 2 ]

then  sed -i '4c\from [email protected]' msmtprc && sed -i '7c\user [email protected]' msmtprc

else echo error!!

fi

sleep 5

done

   

    後臺執行,這樣就能實現5秒隨機更換一個賬號發郵件,可以擴展更多用戶

nohup ./randmail.sh > /dev/null 2>&1 &

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章