CentOS 搭建postfix邮件服务器

注:本文的邮件服务器只用于发送邮件,也就是STMP服务器。

这里主要供zabbix发送报警邮件使用,防止zabbix直接发送邮件因网络抖动而邮件丢失

一、准备工作

  1. 为邮件服务器添加DNS解析

虽然不加DNS解析也能把邮件发出去,但会被大多数邮件服务器当作垃圾邮件。根据我们的实际经验,需要添加三条DNS解析记录:A记录、MX记录、TXT记录。比如域名cnblogs.info,对应的DNS记录如下:

img

  1. 准备存放邮件的硬盘空间

二、配置postfix

postfix是CentOS默认安装的邮件服务器软件。以下配置示例假设要配置的域名是cnblogs.info,邮件服务器主机名是mail.cnblogs.info。

1、 打开postfix的配置文件

vi /etc/postfix/main.cf

2、 :75 光标移至第75行,修改myhostname

myhostname = mail.cnblogs.info

3、 :83 光标移至第83行,修改mydomain

mydomain = cnblogs.info

4、 :99 光标移至第99行,修改myorigin

myorigin = $mydomain

5、 :116光标移至第116行,修改inet_interfaces

inet_interfaces = all

6、 :119光标移至第119行,修改inet_protocols

inet_protocols = ipv4

7、 :164光标移至第164行,添加$mydomain

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

8、 :264光标移至第264行,修改mynetworks

mynetworks = 10.10.20.0/24

子网掩码(netmask)转换器:Network and IP address calculator

9、 :419 光标移至第419行,设置home_mailbox

home_mailbox = Maildir/

10.、:425 光标移至第425行,设置mail_spool_directory,/data是之前挂载的数据盘,mail目录需要通过mkdir命令创建

mail_spool_directory = /data/mail

11、 重启postfix使设置生效

service postfix restart

三、用telnet测试邮件服务器是否正常

简洁快速测试方式:

#       邮件内容                   主题      收件人
echo "zabbix test mail" |mail -s "zabbix" [email protected]

查看邮件队列

postqueue -p    # 另一个相似命令:mailq

Telnet测试方式:

1、 在邮件服务器上安装telnet

yum install telnet

2、 连接服务器SMTP端口

telnet 127.0.0.1 25

3、 填写发件人

MAIL FROM:<test@cnblogs.info>

回车

4、 填写收件人

RCPT TO:contact@cnblogs.com 

回车

5、 撰写邮件内容

5.1 开始写邮件内容

DATA                   

回车

5.2 输入标题

Subject: test message

回车

5.3 输入内容,并以.号结束

test body
.

如果显示下面的信息,说明邮件进入发送队列

250 2.0.0 Ok: queued as 88D6D32A94

四、授权其他服务器通过该邮件服务器发送邮件

未授权的情况下,如果在其他服务器telnet这台服务器,在输入收件人之后会出现Relay access denied错误

RCPT TO:contact@cnblogs.com
554 5.7.1 <contact@cnblogs.com>: Relay access denied

解决方法:

vi /etc/postfix/main.cf,:264将光标移至第264行,在mynetworks的值之后加这台的服务器IP地址,比如:

mynetworks = 127.0.0.0/8 58.33.14.124

service postfix restart之后,问题解决。

五、其他问题

收到上面telnet发出的邮件时,你会发现收件人信息显示的是undisclosed recipients,解决方法是在DATA命令之后,输入Subject之前,分别输入:

FROM:test@cnblogs.info
TO:contact@cnblogs.com

默认跟Postfix 相关的邮件都会放在/var/spool/postfix/目录下,以下是每个目录的用途

MAIL QUEUES 
 * incoming 收信箱 
 * active 正在准备发送的邮件
 * defered 无法发送的邮件,等待重发
 * corrupt 无法读取或者损坏的邮件 
 * hold 暂停的邮件,需要手工启动 DELIVERY STATUS REPORTS 
 * bounce 每一位收件者的送信状态,记录为什么退信由 bounce(8) 管理
 * defer 每一位收件者的寄送状态,说明为什么延迟由 defer(8) 管理
 * trace 每一位收件者的寄送状态信息,说明被 Postfix 用 “sendmail -v” 或 “sendmail -bv” 命令执行的状态由 trace(8) 管理
postsuper -d ALL      # 清除所有发送队列

# 刪除所有正在 deferred 队列中的邮件 ( 可看出哪些信被刪除了 )
find /var/spool/postfix/deferred -type f -exec rm -vf /{/} \; 
# 刪掉「三天以前」无法发送的邮件
find /var/spool/postfix/deferred -type f -mtime +3 -exec rm -f /{/} \; 
# 列出目前所有无法发送的邮件 
find /var/spool/postfix/deferred -type f -exec ls -l –time-style=+%Y-%m-%d_%H:%M:%S {} \;
# 刪除超过 5 天的 “defer” 队列中的退信记录 
find /var/spool/postfix/defer -type f -mtime +5 -exec rm -f /{/} \;

转载自:http://www.cnblogs.com/dudu/archive/2012/12/12/linux-postfix-mailserver.html

猜你喜欢

转载自blog.csdn.net/fgf00/article/details/78206737