配置使用php mail发邮件

来自个人维基
跳转至: 导航搜索

使用php mail发送邮件会使用到 sendmail可执行文件,因此前提必须保证已经安装。

这里我们使用 exim4程序:

apt-get install exim4

目录

一、对 exim4进行配置

1、配置软件包

Debian系统只架设了处理本地系统的邮件,而不是用于发送或接收其他系统的邮件。如果您希望使用exim4来处理外部邮件,就需要重新配置 exim4 软件包:

# dpkg-reconfigure exim4-config

1.邮件系统设置的常见类型:选择“用 smarthost 发信;无本地信件”。

2.系统邮件名称:填写你的域名,如yangel.cn。

3.要监听入站 SMTP 连接的 IP 地址:填 127.0.0.1,这里表示只监听本地端口,也就是只有本机能发信,外部不能访问。

4.其它可接收邮件的目的地址:留空

5.本地用户的可见域名:这里和第2步一样,填写你的域名,如yangel.cn,这样本地用户邮件地址就是mail@yangel.cn这样

6.寄信使用的 smarthost 的 IP 地址或主机名:填写外部SMTP地址。如QQ企业邮箱的smtp.exmail.qq.com

7.保持最小 DNS 查询量吗 (按需拔号,Dial-on-Demand)?否

8.将设置文件分拆成小文件吗?否(不搭建复杂的邮件服务器,保持默认就可以,不需要拆分)

9.Root and postmaster mail recipient: 留空

2、增加STMP验证需要的账号和密码

上面已经将exim4软件包重新配置支持外部SMTP发信了,现在我们还需要修改配置文件,加入我们外部SMTP服务器需要的用户名和密码:

# vi /etc/exim4/passwd.client

在末尾加入:

*:exim4-test@yangel.cn:123456

格式就是:

SMTP服务器:SMTP账号:SMTP密码

其中SMTP服务器用通配符*代替,因为上面配置exim4软件包时已经设置了

3、使exim4支持SMTP明文密码

  • 经验证,QQ邮箱支持MD5加密,因此可以跳过此步。

默认exim发送的SMTP密码是经过MD5加密的,这样反而导致某些SMTP服务器无法识别加密过的密码,比如QQ邮箱,GMail好像不用取消,大家自己测试,这一步的目的就是取消密码加密。

# vi /etc/exim4/exim4.conf.template

查找:

cram_md5:

在上面加入:

AUTH_CLIENT_ALLOW_NOTLS_PASSWORDS=1

二、增加系统邮箱地址

# vi /etc/email-addresses

在末尾加入:

root: exim4-test@yangel.cn

格式就是:
系统用户名: Email地址

  • 不配置的话,默认会使用当前用户发送,如当前为root用户,则发件人会为 root@yangel.cn,这样明显会出错

三、重启exim4,发送邮件测试

# /etc/init.d/exim4 restart
# date | mutt -s "Test Mail" exim4-test@yangel.cn
  • 最后,如果出现问题,可以通过下面的log进一步查找原因
/var/log/exim4/mainlog


参考资料:http://blog.sina.com.cn/s/blog_54b247200100qw2d.html