用msmtp代替sendmail发邮件

背景: Sendmail 没法使用外部smtp发邮件,不少程序又标配有sendmail,有些外部smtp好比网易的免费企业邮箱对帐号发信量有限制,因此使用msmtp代替sendmail,既能够不用改动程序,又能够使用外部smtp,并且能够用脚本实现多个帐号随机发送,增长发信量。php

1.          下载安装msmtpbash

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

   yum remove openssl 须要opsensslide

tar jxvf msmtp-1.4.26.tar.bz2函数

cd msmtp-1.4.26测试

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

make && make installthis

2.          手动创建配置文件,输入外部smtp地址url

mkdir –p /usr/local/msmtp/etcspa

vi /usr/local/msmtp/etc/msmtprc

添加如下内容

account default

host smtp.qiye.163.com

port 25

from test@abc.com

auth login

tls off

user test@abc.com

password 111111

logfile /var/log/mmlog

 

3.          测试邮件

usr/local/msmtp/bin/msmtp xxxxxxxx@qq.com
  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" xxxxxxx@qq.com

 

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 test@abc.com' msmtprc && sed -i '7c\user test@abc.com' msmtprc

elif [ "$A" -eq 1 ]

then   sed -i '4c\from test1@abc.com' msmtprc && sed -i '7c\user test1@abc.com' msmtprc

elif [ "$A" -eq 2 ]

then  sed -i '4c\from test2@abc.com' msmtprc && sed -i '7c\user test2@abc.com' msmtprc

else echo error!!

fi

sleep 5

done

   

    后台执行,这样就能实现5秒随机更换一个帐号发邮件,能够扩展更多用户

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

相关文章
相关标签/搜索