Category Archives: CentOS

CentOS6.5 安装Mail Server Postfix & dovecot 架构

前言

在Linux 的Mail Server 中,大多都是使用Sendmail or Postfix 为主的MTA Server,但随着Sendmail 功能越来越多,也造成了程式肥大且资安漏洞的问题,大多的设定较不易了解。而Postfix 是目前最简单设定,且资安防护比Sendmail 好很多,在CentOS6.x 已从预设的Sendmail 改为Postfix。

架构与观念

postfi1

Mail Server的整个流程及概念是由几个专有名词而组成的

MUA (Mail User Agent):担任Client 端Active 的角色,例如Microsoft Outlook / Thunderbird 等主动发出收信及寄信的软体。

MTA (Mail Transfer Agent):协助MUA ( Client ) 将信件寄出和接收信件讯息,例如Sendmail、Postfix 等Mail Server。

MDA (Mail Delivery Agent):在MUA 收到信件后,由MDA 决定信件该去哪里,简单来说就是一个过滤的功能,常见的有procmail、Mailscanner + Spamassassion、maildrop、dovecot 这些都可以提供MDA 的实现。

Mailbox / Maildir:就是电子邮件放置的位置。

Mailbox 是早期所使用的储存格式,将所有电子邮件由一个档案组成,但在效能、扩充等等能力皆受到考验,已渐渐由Maildir 替代。

Maildir 储存方式为每一封邮件为一个档案,多数功能都比Mailbox 优,但对于超大型的Maildir 搜寻效能将受到考验,且有早期的Web Mail 不支援Maildir ( Openwebmail 2.01 before )

环境 & 目的

需要可收发的Mail Server,并且需要Webmail 可使用
OS & Service : CentOS 6.5 64bit、SMTP、POP3、IMAP、HTTP

Package :
postfix-2.6.6-6.el6_5.x86_64
cyrus-sasl-md5-2.1.23-13.el6_3.1.x86_64
cyrus-sasl-2.1.23-13.el6_3.1.x86_64
cyrus-sasl-plain-2.1.23-13.el6_3.1.x86_64
cyrus-sasl-lib-2.1.23-13.el6_3.1.x86_64
dovecot-2.0.9-7.el6.x86_64
openwebmail-data-2.53-3.i386
openwebmail-2.53-3.i386

设定 Postfix & sasl 验证

SETP.1 安装套件

[php]yum -y install postfix cyrus-sasl-md5 cyrus-sasl-plain cyrus-sasl[/php]

SETP.2 设定 postfix , main.cf

[php]vim /etc/postfix/main.cf
myhostname = 81tu.com // HostName
mydomain = 81tu.com // Mail domain , example: eric@81tu.com
inet_interfaces = all // 允许 all 都可以通过 mail server 转发邮件。
inet_protocols = ipv4 // 只接受使用 ipv4 協定
mynetworks = 10.XXX.XXX.0/24, 221.XX.XX.0/24, 127.0.0.0/8 //10开头的代表的是内网ip,221是公网的ip
mydestination = 81tu.com,mail.81tu.com $myhostname, localhost.$mydomain, localhost, mydomain // 能夠收信的主機名稱,如果 MX 標誌務必加入此行。

# 以下为sasl auth setting
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination[/php]

SETP.3 启动服务

[php]chkconfig saslauthd on
service saslauthd restart
chkconfig postfix on
service postfix restart[/php]

SETP.4 开启防火墙对应的端口

[php]# SMTP
iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport 25 -j ACCEPT
# POP
iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport 110 -j ACCEPT
# POP3S
iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport 995 -j ACCEPT
# IMAP
iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport 143 -j ACCEPT
# IMAPS
iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport 993 -j ACCEPT[/php]

SETP.5 用 telnet 工具检测

[php]yum -y install telnet
iptables -F //不执行这个会出现解析不到主机
telnet mail.81tu.com 25
ehlo localhost [/php]

postfix2
出现AUTH PLAIN LOGIN (AUTH=PLAIN LOGIN ) 即设定完成

验证目标为本机使用者,并且提供imap 服务给webmail、pop3 给MUA

设定 dovecot

SETP.6安装套件

[php]yum -y install dovecot[/php]

SETP.7 编辑设定档 , dovecot.conf

[php]vim /etc/dovecot/dovecot.conf
protocols = imap pop3 lmtp // 这里设定的服务启动后会Listen port,范例imap(143)、POP3(110)[/php]

SETP.8 编辑设定档 , 10-auth.conf

[php]vim /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = no // 取消明码传输, 若无取消在MUA端预设禁止明码会出现error。 [/php]

SETP.9 编辑设定档 , 10-mail.conf

[php]vim /etc/dovecot/conf.d/10-mail.conf
mail_location = mbox:~/mail:INBOX=/var/mail/%u // 用maildir储存格式并放到使用者的家目录~ [/php]

SETP.10 启动服务

[php]chkconfig dovecot on
service dovecot restart[/php]

SETP.11 建立帐号, 范例使用本机帐号验证,最好的方式还是使用LDAP

[php]adduser user1
passwd user1
usermod -s /sbin/nologin user1 // 资安因素不让帐号允许登入
chmod -R 0777 /var/mail [/php]

SETP.12 检查
postifx3

关于openwebmail的配置,我配置之后无法打开允许,是不是因为没有安装perl安装后也无法允许所以暂时没有搞懂,有懂的欢迎留言,先行谢过

文章内容主要来源台湾网站,有点小问题,不够完善,而且国内访问不了,特此转来。
原地址:http://shazi.twbbs.org/centos6-5-%E5%AE%89%E8%A3%9Dmail-server-%E4%B8%80-postfix-%E6%9E%B6%E6%A7%8B/