使用postfix在debian上配置邮件服务器

  1. 如果debian中安装了exim4,先卸载exim4:
    apt-get remove exim4
  2. 安装postfix
    apt-get install postfix
  3. 安装完成后就可以测试下,PHP代码如下:
    public function index(){
    $isok=mail('你的接受email地址','test','test');
    echo $isok;
    }

    php中的mail函数用法请参考php手册。
    这时收到的邮件发件人大致是:www-data <www-data@你的hostname>

  4. 为了不让别的邮件服务器认为是垃圾邮件,需要做下面几步域名相关的操作:
    • 添加A记录
      mail	A	默认	你的服务器ip	-	120
    • 添加MX记录
      @	MX	默认	mail.你的域名.	1	600
    • 查看mx记录是否生效
      host -t mx taozhoubian.net
    • 添加TXT记录
      @	TXT	默认	v=spf1 mx a:mail.taozhoubian.net ~all	-	600	
  5. 规范发件人的尝试,我们想把发件人显示自己设定的,比如“osEye <no-reply@oseye.net>”,我们做了如下尝试
    • 修改mail参数:
      $isok=mail('你的接受邮件地址','test','test',null,'no-reply@你的域名');

      发件人没任何改变。

    • 设置postfix的hostname和domain:
      postconf -e "myhostname=tazhoubian.net"
      postconf -e "mydomain=mail.tazhoubian.net"
      postfix reload

      收到的邮件头:

      发件人:www-data <www-data@你的hostnamelinode.com>
      邮件原文:
      Received: from 你的域名 (unknown [你的服务器IP])
      by newmx61.qq.com (NewMx) with SMTP id
      for <你的接受邮件地址>; Tue, 13 Aug 2013 11:13:16 +0800
      X-QQ-SSF: 110000000000000001F000020000001
      X-QQ-mid: mx61t1376363597tnge1fsmw
      Received: by 你的域名 (Postfix, from userid 33)
      id 1AFCF38D3E; Tue, 13 Aug 2013 11:13:16 +0800 (CST)
      To: 你的接受邮件地址
      Subject: test
      X-PHP-Originating-Script: 0:testtemp.php
      Message-Id: <20130813031316.1AFCF38D3E@你的域名>
      Date: Tue, 13 Aug 2013 11:13:16 +0800 (CST)
      From: www-data@你的hostnamelinode.com (www-data) test
    • 设置debian 的hostname:
      hostname 你的域名

      发件人没任何改变。

    • 重新配置postfix
      dpkg-reconfigure postfix

      其中“System mail name”填写你的域名;“Root and postmaster mail recipient”填写空;“other destinations to accept mail for”增加你的域名。
      发件人没任何改变

    • 经过查资料,发现还是要从mail函数入手,于是修改mail参数:
      $isok=mail('你的接受邮件地址','test','test',null,'-fno-reply@你的域名');

      收件人改变了:www-data <no-reply@你的域名>

    • 继续尝试mail函数:
      $isok=mail('你的接受邮件地址','test','test',null,'-Fabc');

      收件人改变了:abc <www-data@你的hostnamelinode.com>

    • 再来一个-f-F结合使用的:
      $isok=mail('你的接受邮件地址','test','test',null,'-Fabc -fno-reply@你的域名');

      收件人改变了:abc <no-reply@你的域名>
      哈哈,终于成功了。

  6. 如果要限制外来主机访问smtp服务,修改/etc/postfix/main.cf里的
    inet_interfaces=all

    改为

    inet_interfaces=localhost
  7. 屏蔽头部 postfix received:by (Postfix from userid.....
    • 在/etc/postfix/main.cf增加
      header_checks = regexp:/etc/postfix/header_checks
    • 编辑或新建/etc/postfix/header_checks
      /^Received:/         IGNORE
    • 重启postfix:
      /etc/init.d/postfix restart
上一篇:Linux常用网络工具:批量主机服务扫描之netcat


下一篇:搭建Spring Cloud+Dubbo