配置使用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