linux:Linux系统下邮件服务器的搭建(Postfix+Dovecot)
理论知识
邮件服务简介
电子邮件服务是Interne上最基本的服务之一,进入互联网的用户不需要任何纸张就可以方便地使用电子邮件来收发邮件。
Internet上的电子邮件服务都是基于客户/服务器模式的。
客户端通常使用电子邮件软件(如Outlook Express、Foxmail等)来收发邮件。
邮件系统的组成:
- MUA:在客户端执行的软件,用来接受用户的指令,将用户的信件传送至信件传输代理
- MTA:用在邮件服务器端执行的软件,它也是主要的邮件服务器,可以在服务器间传输电子邮件
- MDA:通常与MTA 一同运行,主要的功能就是将MTA 所接收的信件,依照信件的流向(送到哪里去)来将该信件放置到本机账户下的邮箱(Mailbox)或者是再经由MTA将该信件送到下一个MTA
postfix简介
postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件。postfix是Wietse Venema想要为使用最广泛的sendmail提供替代品的一个尝试。在Internet世界中,大部分的电子邮件都是通过sendmail来投递的,大约有100万用户使用sendmail,每天投递上亿封邮件。这真是一个让人吃惊的数字。Postfix试图更快、更容易管理、更安全,同时还与sendmail保持足够的兼容性。
Postfix服务程序主配置文件中的重要参数
参数 | 作用 |
---|---|
myhostname | 邮局系统的主机名 |
mydomain | 邮局系统的域名 |
myorigin | 从本机发出邮件的域名名称 |
inet_interfaces | 监听的网卡接口 |
mydestination | 可接收邮件的主机名或域名 |
mynetworks | 设置可转发哪些主机的邮件 |
relay_domains | 设置可转发哪些网域的邮件 |
Dovecot简介
Dovecot 是一个开源的 IMAP 和 POP3 邮件服务器,支持 Linux/Unix 系统。
POP / IMAP 是 MUA 从邮件服务器中读取邮件时使用的协议。其中,与 POP3 是从邮件服务器中下载邮件比起来,IMAP4 则是将邮件留在服务器端直接对邮件进行管理、操作。而 Dovecot 是一个比较新的软件,由 Timo Sirainen 开发,最初发布于 2002年7月。作者将安全性考虑在第一,所以 Dovecot 在安全性方面比较出众。另外,Dovecot 支持多种认证方式,所以在功能方面也比较符合一般的应用。
Dovecot 是一个开源的 IMAP 和 POP3 邮件服务器,支持 Linux/Unix 系统。
POP / IMAP 是 MUA 从邮件服务器中读取邮件时使用的协议。其中,与 POP3 是从邮件服务器中下载邮件比起来,IMAP4 则是将邮件留在服务器端直接对邮件进行管理、操作。而 Dovecot 是一个比较新的软件,由 Timo Sirainen 开发,最初发布于 2002年7月。作者将安全性考虑在第一,所以 Dovecot 在安全性方面比较出众。另外,Dovecot 支持多种认证方式,所以在功能方面也比较符合一般的应用。
实验步骤
DNS服务器搭建
- 配置/etc/named.conf
主配置文件:/etc/named.conf,参数用来定义bind服务程序的运行。需指定包含的区域配置文件。
include “/etc/named.xcu.zones”; //引入一个自己定义的区域配置文件
listen-on port 53 { any; }; //表示服务器上的所有IP地址均可提供DNS域名解析服务
allow-query { any; }; //允许所有人对本服务器发送DNS查询请求 - 配置文件/etc/named.xcu.zones
区域配置文件:/etc/named.xcu.zones,需指定包含的正向解析记录文件和反向解析记录文件。类似于图书的目录,对应着每个域和相应IP地址所在的具体位置,当需要查看或修改时,可根据这个位置找到相关文件。
allow-update:允许哪些主机动态更新域数据信息
allow-transfer :哪些从服务器可从主服务器下载数据文件
masters :定义主域名服务IP地址,仅当type取值为slave时此选项生效。 - 配置正向查找区域,配置文件/var/named/named.xcu.edu.cn
正向解析文件:/var/named/named.xcu.edu.cn,用来保存域名和IP地址真实对应关系的数据配置文件。
serial:表示配置文件的修改版本,格式为年月日加上修改的次数;
refresh:设定辅助dns和主dns进行同步的间隔时间;
retry:如果辅助dns进行更新失败后,间隔多久进行重试;
expiry:设定辅助dns与主dns同步失败后,多长时间后清除对应的记录;
minimum:默认最小的TTL值,如果在前面没有设置TTL,则以此值为准。 - 配置反向查找区域,配置文件 /var/named/named.30.168.192
反向解析:在DNS域名解析服务中,反向解析的作用是将用户提交的IP地址解析为对应的域名信息,它一般用于对某个IP地址上绑定的所有域名进行整体屏蔽,屏蔽由某些域名发送的垃圾邮件。它也可以针对某个IP地址进行反向解析,大致判断出有多少个网站运行在上面。 - 将配置文件/etc/named.conf和/etc/named.xcu.zones复制到目
录/var/named/chroot/etc/下
先运行脚本,似的chroot生效,启动dns服务,并设置为开机启动,查看DNS服务工作情况。 - 测试DNS服务器工作
配置Postfix
- 安装postfix
- 修改postfix的主配置文件/etc/postfix/main.cf
(1)inet_interfaces参数指定postfix系统监听的网络接口。缺省地,postfix监听所有的网络接口。如果postfix运行在一个虚拟的ip地址上,则必须指定其监听的地址。
(2)myhostname 参数指定运行postfix邮件系统的主机的主机名。缺省地,该值被设定为本地机器名。也可以指定该值,需要注意的是,要指定完整的主机名。
(3)mydomain参数指定你的域名,缺省地,postfix将myhostname的第一部分删除而作为mydomain的值。也可以自己指定该值。
(4)relay_domains参数是系统传递邮件的目的域名列表。如果留空,我们保证了我们的邮件服务器不对不信任的网络开放。
(5)smtpd_client_restrictions = permit_sasl_authenticated
指定可以向postfix发起SMTP连接的客户端的主机名或ip地址。
此处permit_sasl_authenticated意思是允许通过sasl认证(也就是smtp链接时通过了账号、密码效验的用户)的所有用户。
(6)smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated, reject_unauth_destination
发件人在执行RCPT TO命令时提供的地址进行限制规则 此处照搬复制即可
(7)smtpd_sasl_auth_enable = yes
指定postfix使用sasl验证 通俗的将就是启用smtp并要求进行账号、密码效验.
(8)smtpd_sasl_local_domain = $mydomain
指定SMTP认证的本地域名,本次配置可以使用 smtpd_sasl_local_domain = ‘’ 或干脆注释掉 默认为空.
(9)smtpd_sasl_security_options = noanonymous
取消smtp的匿名登录,此项默认值为noanonymous smtp若能匿名登录危害非常大 此项请务必指定为noanonymous - 启动postfix服务
- 获得sasl的认证
将/etc/sysconfig/saslauthd文件中的MECH=pam改为 MECH=shadow,将sasl验证方式改为系统用户密码验证。
解除SELinux的限制,验证是否能够使用系统上的账号密码来进行认证
配置dovecot
- 安装dovecot服务,yum install dovecot -y
- 配置dovecot服务
(1)文件位置:/etc/dovecot/dovecot.conf
修改部分:listen = * ,监听连接进来的ip地址, [*]指所有的IPV4,[::]指所有IPV6
(2)文件位置:/etc/dovecot/conf.d/10-auth.conf ,开启明文传输,允许明文密码验证
(3)文件位置:/etc/dovecot/conf.d/10-mail.conf
mail_location = maildir,用户的邮件目录位置,在Dovecot服务程序单独的子配置文件中,定义一个路径,用于指定要将收到的邮件存放到服务器本地的哪个位置。Dovecot收邮件的方式一定要与Postfix收邮件方式相同,这里使用maildir方式存储。
(4)文件位置:/etc/dovecot/conf.d/10-master.conf,postfix需要连接到这个sock进行认证 - 启动dovecot服务
测试
- 创建一个邮件内容文件后发送。
- 查看收到文件内容
故障排查
- DNS启动失败
使用 named-checkconf检查主配置文件。
使用 named-checkzone检查区域文件。
如果出现错误,系统将给出相应的提示,包括出现的错误及错误发生的位置。 - postfix启动失败
1)先卸载sendmail再安装配置postfix
2)命令: postconf -n检查配置文件是否修改正确,
打开后分别找到以下几项,将其前面的#去掉,保证配置文件修改正确。
myhostname = mail.xcu.edu.cn
mydomain = xcu.edu.cn
myorigin = $ mydomain
inet_interfaces = all
inet_protocols = ipv4
mydestination = $ myhostname, localhost.$ mydomain, localhost, $ mydomain
mynetworks =
relay_domains =$ mydestination,twl.com
home_mailbox = Maildir/ - 防火墙开放110和25号端口,命令:
iptables -I INPUT -p tcp -m multiport --dports 25,110 -j ACCEPT
iptables -I INPUT -p udp -m multiport --dports 25,110 -j ACCEPT