首页 > 代码库 > 邮件系统部署文档(Linux版)

邮件系统部署文档(Linux版)

文档目的

熟悉邮件系统,了解邮件收发流程

 

 

基础知识

 

MUA(Mail User Agent 用户代理): 用于收发邮件。

MTA(Mail Transfer Agent邮件传输代理):将来自于MUA的邮件转发给指定用户。

MDA(Mail Delivery Agent邮件投递代理):将来自于MTA的邮件保存到本机的收件箱中。(事实上,这个 MDA 是挂在 MTA 底下的一个小程序, 最主要的功能就是:分析由 MTA 所到的信件表头或内容等数据, 来决定这封邮件的去向。)

 

Postfix:提供邮件发送服务,即SMTP

Dovecot:提供邮件收取服务,即POP3

OutLook Express:客户端收发邮件的工具。

常用命令

postqueue

查看邮件队列信息

mailq

查看邮件队列信息

alternatives --config mta

修改默认邮件传输代理

alternatives --display mta

查看默认邮件传输代理

service dovecot status

查看服务状态

/usr/sbin/postconf -n

检查postfix配置





 

所需软件

 

telnet  可以用来验证本地邮件服务是否安装成功  telnet 127.0.0.1 25

软件结构

 

/etc/postfix/main.cf

这就是主要的 postfix 配置文件啰,几乎所有的设定参数都是在这个档案内规

范的! 这个档案预设就是一个完整的说明档了,你可以参考这个档案的内容就

设定好属于你的 postfix MTA 呢! 只要修改过这个档案,记得要重新启动

postfix 喔!

 

参数

作用

myhostname

邮局系统的主机名。

mydomain

邮局系统的域名。

myorigin

从本机寄出邮件的域名名称。

inet_interfaces

监听的网卡接口。

mydestination

可接收邮件的主机名或域名。

mynetworks

设置可转发那些主机的邮件。

relay_domains

设置可转发那些网域的邮件

 

/etc/postfix/master.cf

主要规定了 postfix 每个程序的运作参数,也是很重要的一个配置文件。不过

这个档案预设已经很 OK 了,通常不需要更改他。

 

/etc/postfix/access (利用 postmap 处理)

可以设定开放 Relay 或拒绝联机的来源或目标地址等信息的外部配置文件,不

过这个档案要生效还需要在 /etc/postfix/main.cf 启动这个档案的用途才行。

且设定完毕后需要以 postmap 来处理成为数据库档案呢!

 

/etc/aliases (利用 postalias newaliases 均可)

做为邮件别名的用途,也可以作为邮件群组的设定喔!

至于常见的执行档则有底下这些:

net.qiang@hotmail.com

 

/usr/sbin/postconf (查阅 postfix 的设定数据)

这个指令可以列出目前你的 postfix 的详细设定数据,包括系统默认值也会被

列出来, 所以数据量相当的庞大!如果你在 main.cf 里面曾经修改过某些预设

参数的话,想要仅列出非默认值的设定数据, 则可以使用『postconf -n』这个

选项即可。

 

/usr/sbin/postfix (主要的 daemon 指令)

此为 postfix 的主要执行档,你可以简单的使用他来启动或重新读取配置文件:

[root@www ~]# postfix check <==检查 postfix 相关的档案、权限等是否正确!

[root@www ~]# postfix start <==开始 postfix 的执行

[root@www ~]# postfix stop <==关闭 postfix

[root@www ~]# postfix flush <==强制将目前正在邮件队列的邮件寄出!

[root@www ~]# postfix reload <==重新读入配置文件,也就是

 

/etc/postfix/main.cf

要注意的是,每次更动过 main.cf 后,务必重新启动 postfix,可简单的使用

postfix reload』即可。不过老实说,鸟哥还是习惯使用 /etc/init.d/postfix

reload..

 

/usr/sbin/postalias

设定别名数据库的指令,因为 MTA 读取数据库格式的档案效能较佳,所以我们

都会将 ASCII 格式的档案重建为数据库。 在 postfix 当中,这个指令主要在

转换 /etc/aliases 成为 /etc/aliases.db 啰!用法为:

[root@www ~]# postalias hash:/etc/aliases

# hash 为一种数据库的格式,然后那个 /etc/aliases.db 就会自动被更新

啰!

 

/usr/sbin/postcat

主要用在检查放在 queue (队列) 当中的信件内容。由于队列当中的信件内容是

MTA 看的, 所以格式并不是一般我们人类看的懂的文字数据。所以这个时候

你得要用 postcat 才可以看出该信件的内容。 在 /var/spool/postfix 内有相

当多的目录,假设内有一个文件名为 /deferred/abcfile , 那你可以利用底下

的方式来查询该档案的内容喔:

[root@www ~]# postcat /var/spool/postfix/deferred/abcfile

 

/usr/sbin/postmap

这个指令的用法与 postalias 类似,不过他主要在转换 access 这个档案的数

据库啦!用法为:

net.qiang@hotmail.com

[root@www ~]# postmap hash:/etc/postfix/access

 

/usr/sbin/postqueue

类似 mailq 的输出结果,例如你可以输入『postqueue -p』看看就知道了!

 

/var/log/maillog

记录邮件传递过程的日志。

 

系统环境

 

 

 

 

操作步骤

1.设置DNS MX记录

由于邮件系统需要DNS的支持(现在已经没有人用IP来寄信,email都是使用【账号@主机名】的方式来处理,所以邮件服务器一定要有个合法注册过的主机名),需要在DNS上配置MXA标识,来指出邮件服务器的具体位置

 

在配置邮件服务之前,需要先在DNS服务器中添加A记录和MX记录,具体方法

aLinux中添加以下节点

 

@ IN MX 10 mail.zoenet.com.

mail IN A 172.16.3461

 

bWindowsDNS管理器中“正向查找区域”的相应域中右键“新建主机(AAAAA)”新建一个邮件服务器的A记录,然后再邮件点击“新建邮件交换器(MX)(M)”,注意“主机或子域”不填,接着把邮件主机选择浏览到刚刚新建的mail主机(优先级的话只有一台可以随便设置,如果有多台,数值小的优先)。

 

 

然后再修改邮件服务器本地主机名的配置文件

vim /etc/hostname

输入主机名

mail.zoenet.com

 

 

2.配置Postfix服务程序

 

先停止防火墙

systemctl stop firewalld

 

 

安装postfix程序(一般系统中都默认已经安装)

yum install postfix -y

 

a)配置main.cf 文件

vim /etc/postfix/main.cf

 

修改以下配置

//修改第76行的邮件服务器主机名

myhostname = mail.zoenet.com

 

//修改第83行邮件服务器域名

mydomain = zoenet.com

 

//修改第99行寄出邮件域名,$mydomain的值已经在上面有定义

myorigin = $mydomain

 

//修改第116行的监听网卡

inet_interfaces = all

 

//修改第164行的可接收邮件的主机名和域名

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


技术分享

技术分享

技术分享

技术分享

技术分享


b)创建邮箱账号

这里的邮箱账号是用到系统pam文件,故创建的方式和创建系统账号的方式是一样的

 

useradd zoe

echo redhat | passwd --stdin zoe


技术分享


c)启动Postfix服务程序

systemctl restart postfix

systemctl enable postfix

systemctl status postfix


技术分享


3.配置dovecot服务

a)安装dovecot程序

yum install dovecot -y

 

b)修改dovecat.conf

vim /etc/dovecot/dovecot.conf

 

//修改第24行的支持邮件协议

 24 protocols = imap pop3 lmtp

 

//然后追加允许明文认证(25行)

disable_plaintext_auth = no

//修改第48行的允许登陆网段地址,全部允许即为(0.0.0.0/0

login_trusted_networks = 0.0.0.0/0


技术分享

技术分享


c)配置邮件的格式与存储路径

vim /etc/dovecot/conf.d/10-mail.conf

 

//修改第25,#去掉

mail_location = mbox:~/mail:INBOX=/var/mail/%u

技术分享


d)创建邮件存储目录

su zoe

mkdir -p mail/.imap/INBOX

 

e)启动dovecot服务

systemctl restart dovecot

systemctl enable dovecot

 

4.使用outlook登陆

修改outlook所在电脑的DNS

技术分享

技术分享

技术分享

技术分享

技术分享


注:第一次搜索outlook使用加密登入模式,所以无法登陆,会显示登入失败,点击下一步,使用非加密登入即可


技术分享

技术分享


没成功。。。。

5.测试邮件服务器

安装telnet

yum install telnet

 

登入SMTP端口

telnet 127.0.0.1 25

 

填写发件人

MAIL FROM:<test@zoenet.com>

敲回车

 

填写收件人

RCPT TO:<hahaha@zoenet.com>

 

开始写邮件内容

DATA

 

输入标题

Subject: test message

 

输入内容,并以 . 结束

this is my first mail

.

 

 

常见问题

 

问题一:outlook无法登入用户,dovecot启动报错“ Address family not supported by protocol”

技术分享


解决方法:

原因是因为系统不存在ipv6

vim  /etc/dovecot/dovecot.conf  

listen = * [::]改为listen = *

 

 

问题二:可以发邮件,但是outlook和mail均无法收到邮件,邮件服务器中/home/username/Maildir/new中可以看到邮件

解决方法:

/etc/postfix/main.cf 425mail_spool_directory = /var/mail #去掉

确保/etc/dovecot/conf.d/10-mail.conf 中第24行到第26行的路径和收件箱的路径一样。一般outlook收不到邮件都是这里的配置问题。

 

参考文献

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


本文出自 “11591346” 博客,请务必保留此出处http://11601346.blog.51cto.com/11591346/1869925

邮件系统部署文档(Linux版)