先使用putty等工具登陆ssh
wget http://downloads.sourceforge.net/msmtp/msmtp-1.4.16.tar.bz2?modtime=1217206451&big_mirror=0最新版本参见:http://msmtp.sourceforge.net/download.html
2、安装切换到,cd /usr/local/msmtp
新建文件夹etc,
mkdir etc使用vi新建文件,输入:vi /usr/local/msmtp/etc/msmtprc ,编辑内容如下:
# Set default values for all following accounts.Esc,shift+:进入命令模式,输入wq,保存退出。
由于password是明码,所以我们需要修改此文件的权限
chmod 600 msmtprc为了方便调用,增加个软链接
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 -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用mail发送的时候使用的root用户,而是用PHP发送的时候一般是单独的web服务帐户如apache/noboday或nginx等,这些帐户没有读取msmtp账户的权限,会导致无法读取配置程序,从而发送失败,解决办法只能是另外指定单独的配置文件
附1、Logwatch应用msmtp实例修改Logwatch配置文件:
vim /usr/share/logwatch/default.conf/logwatch.conf
LogDir = /var/log输入logwatch,等执行完毕,去收信即可
如果收信有问题,可以查看msmtp的日志,不论是否发送成功都有记录
附2、安装配置mutt1、一般Linux都会默认安装mutt,CentOS也不例外
可以使用which mutt查看mutt安装的路径,如果没有安装可以使用 # yum install mutt
2、编辑mutt配置文件
vi /etc/Muttrc ,编辑mutt的总设置,修改以下几行
set from=“发送邮件地址”发件地址最好与msmtp设置的账号相同,否则可能会出错。
vi ~/.muttrc , 编辑根目录下的设置
set envelope_from=yes3、测试一下mutt是否有效
echo “测试测试” | mutt -s “测试” 测试邮件地址
echo “test” |mutt -s “my_first_test” 23335807@qq.com
下面就可以使用mutt进行邮件备份等工作了,结合cron使用,可以实现的功能相当多。