首页 » VPS 知识 » 浏览内容

Debian PHP下用exim4 发邮件


2012-02-25 00:55:37 5,409 0 发表评论 字体: 作者:C.K.
标签: Debianexim4Sendmail

体验版 88 元,个人版 128 元,多用户版 288元个人版160元升级到多用户版。

Debian一般使用exim4发信,而不是sendmail

/var/lib/exim4/config.autogenerated

若机器没安装exim,则先执行

apt-get install exim4

exim4默认没有对外联网需要修改

/etc/exim4/update-exim4.conf.conf

找到 dc_eximconfig_configtype=local把 local 改为 internet

dc_local_interfaces=’127.0.0.1 ; ::1′ 代表只允许本机发送邮件

默认系统使用本地发信模式,想要使用自身的smtp服务器发信,需要进行重新配置,在debian上,可以使用text图形进行配置,执行如下命令:

dpkg-reconfigure exim4-config

就会直观的出现配置向导,在整个向导中,只需要修改3个部分
1.将发信模式由localhost改为internet模式
2.将系统邮件名称改为您的服务器名称(如果可以,建议此名称为您IP的rDNS名)
3.其他可接受邮件名,可以为空,也可以默认
完成配置向导之后,您需要更新配置文件和重启程序,命令如下

        update-exim4.conf
  • /etc/init.d/exim4 restart
  • 下面可以进行发信测试

    debian/#mail user
  • Subject:Test Mail
  • This is a test mail.
  • . (注:这个点表示邮件结束)
  • Cc:my@mydomain.com
  • 发送完毕之后进入邮箱检查,可以看到成功接收邮件。

    接着使用 ln -s /usr/sbin/exim /usr/sbin/sendmai

    做一个软连接,实际上squeeze 下安装exim4的时候已经做好软连接了。

    找到你的 php.ini 文件 用 vi 编辑它
    如果 sendmail_path 为 sendmail_path = /usr/sbin/sendmail -t -i 即无需修改了
    若sendmail_path为注释状态 去掉 sendmail_path 前面的 ;
    并附上 /usr/sbin/sendmail -t -i

    使其为 sendmail_path = /usr/sbin/sendmail -t -i

    保存文档

    最后重启你的apache或PHP-FPM即可


    debian的sarge和etch都使用exim4作为MTA。为了安全,系统默认安装好的exim4是bind在localhost,并且只能收发本地的邮件的。如果发送了外部的邮件,会在/var/log/exim4/maillog中看到类似的信息:

    2007-03-04 14:56:03 1HNkdX-0003wV-HU ** xxxxx@163.com R=nonlocal: Mailing to remote domains not supported

    我们使用

    exim4 -bV
    命令可以看到当前exim4的一些版本信息和其它信息,如:

    Exim version 4.63 #1 built 20-Dec-2006 14:27:08
  • Copyright (c) University of Cambridge 2006
  • Berkeley DB: Sleepycat Software: Berkeley DB 4.3.29: (September  6, 2005)
  • Support for: crypteq iconv() IPv6 GnuTLS move_frozen_messages
  • Lookups: lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmnz dsearch nis nis0 passwd
  • Authenticators: cram_md5 plaintext
  • Routers: accept dnslookup ipliteral manualroute queryprogram redirect
  • Transports: appendfile/maildir/mailstore autoreply lmtp pipe smtp
  • Fixed never_users: 0
  • Size of off_t: 8
  • Configuration file is /var/lib/exim4/config.autogenerated
  • 其中最后一行可以看到exim4默认的config file是

    /var/lib/exim4/config.autogenerated
    从该配置文件中,我们可以看到可以修改绑定的ip、可以收发什么地方的邮件之类的配置。不过,如果我们修改了该配置文件,再使用debian自带的/etc/init.d/exim4 脚本进行重启的话,会发现我们的改动不会生效,因为这个文件的内容又被改回来了。
    我检查/etc/init.d/exim4脚本,发现有一个

    function upex4conf()
    该函数调用了

    update-exim4.conf
    命令,在每次启动exim4的时候对配置文件进行检查,并更新

    /var/lib/exim4/config.autogenerated
    文件。update-exim4.conf命令的作用只是以

    /etc/exim4/exim4.conf.template
    文件作为模板,自动生成exim4的默认配置文件。并且如果

    /etc/exim4/exim4.conf
    文件存在的话,该命令会立即退出。
    其实”update-exim4.conf”只是一个bash脚本,刚才说的该命令的用法都是可以直接看语法得出的.
    而命令update-exim4.conf的配置文件是

    /etc/exim4/update-exim4.conf.conf
    名字比较奇怪。如果要对外发邮件,只需要将该配置文件中的选项

    “dc_eximconfig_configtype=local”
  • 修改为
  • "dc_eximconfig_configtype=internet"
  • 即可。另外
  • dc_local_interfaces
    可以修改bind的ip。
    最后的是exim4默认的发送邮件的主机名称为“demohost.”,如果更改这个名字只需要修改

    /etc/mailname
    文件即可。
    不过要注意的是,不要使用不能解析的域名,否则会导致触发邮件发送方的spam过滤机制。比如我随便为我的exim4设置了一个mailname,然后发邮件到网易邮箱,163smtp服务的就会告诉我的exim4,触发了什么spam规则等:

    2007-03-31 16:53:15 1JKVAY-0004uW-R8 ** xx@163.com R=dnslookup T=remote_smtp: SMTP error from remote mail server after MAIL FROM:<nobody@my-mail-server>: host mx2.163.com [220.181.xx.xx]: 550 MI:IMF telecommail,3LUfbREBFQB7jKFQAA==.37784S2 1201769595 http://mail.163.com/help/help_spam_16.htm

      网站统计 Statistics

      • 创建时间: 2005年1月3日 距今4855 天
      • 日志总数: 2461
      • 评论总数: 630
      • 标签总数: 654
      • 链接总数: 273
      • 最后更新: 2017-7-1 18:16:33
      • 您是本站第 13459634 位访客

      广告区 Guǎng Gào