聊聊Postfix邮件服务器-ubuntu下安装配置

项目需要发送邮件,特配置Postfix邮件服务器,本人仅探讨发送,不探讨接收。

声明

如果想要给外网发邮件,必须注册域名并且修改hosts文件和主机名。
类似ubuntu@localhost这样的from是发不出去的,会拒收
1 Mail Delivery Syst Fri Jan 5 17:50 67/2031 Undelivered Mail Returned to Sender

首先,在互联网注册一个域名(建议国外)
再次,修改hosts文件。
一般/etc/hosts 的内容一般有如下类似内容:
127.0.0.1 localhost
那我们要把它修改为自己的域名,以mallol.cn为例,我们就修改为以下格式:
127.0.0.1 mallol.cn localhost
最后修改主机名
临时修改主机名

1
sudo hostname mallol.cn

永久修改主机名
vi /etc/hostname (ubuntu中主机名存在/etc/hostname中,其他系统类推)

注意:
1,你的域名得添加一条MX记录(如果你的域名未注册邮箱的话,先去注册域名邮箱,比如腾讯或者网易企业邮箱)
2,服务器必须要开启25端口,如果用ssl的话,就开启465端口

下面步骤中的mallol.cn 请自觉换成你自己的域名。
下面步骤中的10.31.226.102 请自觉换成你自己的服务器内网ip,用ifconfig查看eth0

环境

ubuntu 16.04 64位,阿里云

安装

更新源

1
sudo apt-get update

安装postfix

1
$ sudo apt-get install postfix

安装后默认配置选择Internet Sites选项好了,其余的默认就好了

配置postfix

1
$ sudo dpkg-reconfigure postfix

在接下来的选项中依次选择
postfix-install-1

postfix-install-2 postfix-install-3 postfix-install-4 postfix-install-5 postfix-install-6 postfix-install-7 postfix-install-8

重启postfix服务

1
2
zou@mallol:/home$ sudo /etc/init.d/postfix reload
[ ok . Reloading postfix configuration (via systemctl): postfix.service

测试

比如建一个php文件 testmail.php

1
2
3
4
5
6
7
8
9
<?php
$to = "zouhongzhao@126.com";
$subject = "My subject";
$txt = "Hello world!";
$headers = "";

$res = mail($to,$subject,$txt,$headers);
var_dump($res);
?>

执行

1
2
zou@mallol:/home$ php testmail.php
bool(true)

登陆邮箱查看是否收到就行了。

常见问题

1,warning: unable to look up public/pickup: No such file or directory

postdrop: warning: unable to look up public/pickup: No such file or directory
创建该目录即可

1
2
mkfifo /var/spool/postfix/public/pickup
service postfix restart

2,bind 0.0.0.0 port 25: Address already in use

25端口被占用了,先找到占用25端口的进程,把进程kill掉即可
lsof -Pni | grep LIST | grep ":25"
kill -9 端口号

坚持原创技术分享,您的支持将鼓励我继续创作!