CentOS下配置MSMTP代替Sendmail发送邮件
思韵闪耀
2013-03-18
0
安装配置msmtp
1、下载、解压 msmtp

先使用putty等工具登陆ssh

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

2、安装
cd msmtp-1.4.16
./configure --prefix=/usr/local/msmtp
make
make install
3、配置msmtp账号

切换到,cd /usr/local/msmtp

新建文件夹etc,

mkdir etc
mkdir /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 msmtprc
4、测试

为了方便调用,增加个软链接

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
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账户的权限,会导致无法读取配置程序,从而发送失败,解决办法只能是另外指定单独的配置文件

附1、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的日志,不论是否发送成功都有记录

附2、安装配置mutt

1、一般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=yes
set 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使用,可以实现的功能相当多。


【版权声明】
本站部分内容来源于互联网,本站不拥有所有权,不承担相关法律责任。如果发现本站有侵权的内容,欢迎发送邮件至masing@13sy.com 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

相关内容

将IIS设置克隆到新服务器...
将IIS设置克隆到新服务器的最佳方法是使用IIS配置文件。以下是详...
2025-06-06
搭建Git服务器及本机克隆...
Git是什么?Git是目前世界上最先进的分布式版本控制系统。SVN...
2025-03-17
ubuntu环境下搭建gi...
操作环境:服务器:Ubuntu 24.04.2 LTS+git 2...
2025-03-17
Linux系统挂载未分配硬...
先查看未挂载之前的磁盘使用情况发现磁盘使用率已经达到了96%,迫切...
2025-02-22
Linux lsblk 命...
简介Linux 中的 lsblk 命令,全称叫做:list blo...
2025-02-22
linux内核5和6区别
Linux内核5.x和6.x版本之间有显著的区别,这些区别主要体现...
2024-04-29

热门资讯

Discus X论坛配置sen... Discuz x2.5 后台邮件设置方法其实和X2/x1.5基本一样,但很多同学都不注意一些细节,比...
redhat Linux系统配... 1 .检查Send Mail 的安装包 [root@sql root]# rpm -qa | gre...
使用Sendmail的反垃圾邮... 在最近几年,无处不在的垃圾邮件已使得所有邮件箱不堪重负,不断地需要工具以抗击这一无穷尽的垃圾邮件流。...