标签归档:smtp

配置SSMTP使用PHP通过GMAIL的SMTP发送邮件

ssmtp中是一个简单的MTA从一台计算机传送邮件到邮件中心(SMTP服务器)。

准备

1. 首先停止SENDMAIL服务,并且从开机启动中去除:

service sendmail stop
chkconfig sendmail off

2. 添加centos的EPEL仓库:

wget http://ftp.astral.ro/mirrors/fedora/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -Uvh epel-release-6-8.noarch.rpm

3. 安装SSMTP

yum instal ssmtp

4. 编辑/etc/ssmtp/ssmtp.conf:

FromLineOverride=YES
root=username@gmail.com
mailhub=smtp.gmail.com:587
UseTLS=YES
UseSTARTTLS=YES
AuthUser=username
AuthPass=推荐使用gmail的两步验证.

/etc/ssmtp/ssmtp.conf的权限要修改为640,并且所属用户改为mail:

chmod 640 /etc/ssmtp/ssmtp.conf
chown root.mail /etc/ssmtp/ssmtp.conf

5. 设置默认的MTA为 /usr/sbin/sendmail.ssmtp:

alternatives --config mta

6. 最后个性php.ini

sendmail_path = /usr/bin/msmtp -t
#如果不修改php.ini可以把msmtp软链接为sentmail
#mv /usr/sbin/sendmail /usr/sbin/sendmail.orig
#ln -s /usr/bin/ssmtp/sbin/ssmtp /usr/sbin/sendmail

7. 测试脚本

mail -s "Mail Title" username@mail.com

SMPT 指令和返回码介绍

客户端一些常用的SMTP指令为:

HELO hostname: 与服务器打招呼并告知客户端使用的机器名字,可以随便填写
MAIL FROM: sender_id : 告诉服务器发信人的地址
RCPT TO: receiver_id : 告诉服务器收信人的地址
DATA : 下面开始传输信件内容,且最后要以只含有.的特殊行结束
RESET: 取消刚才的指令,从新开始
VERIFY userid: 校验帐号是否存在(此指令为可选指令,服务器可能不支持)
QUIT : 退出连接,结束
  服务器返回的响应信息为(格式为:响应码+空格+解释):

220 服务就绪(在socket连接成功时,会返回此信息)
221 正在处理
250 请求邮件动作正确,完成(HELO,MAIL FROM,RCPT TO,QUIT指令执行成功会返回此信息)
354 开始发送数据,结束以 .(DATA指令执行成功会返回此信息,客户端应发送信息)
500 语法错误,命令不能识别
550 命令不能执行,邮箱无效
552 中断处理:用户超出文件空间