您的位置:首页 > 运维架构 > Linux

Centos 下搭建电子邮箱服务器postfix+dovecot

2016-10-02 17:29 579 查看
因为同事在做一个电子邮件服务器,准备进行邮件推广什么的,后来遇到些问题,于是我们两个小白一起研究。

网上有很多关于电子邮件服务器搭建的、完整的档。因此,一些具体的细节和配置,这里就不做详细的说明和解释了。主要讲的是我们两个小白花费大量时间,所查找到的,遇到的问题。

一、背景

postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件。

Dovecot 是一个开源的 IMAP 和 POP3 邮件服务器,支持 Linux/Unix 系统。

经典搭配:

postfix(作为发送邮件服务器)+dovecot(作为接收邮件服务器)+mysql(作为数据库)

作为最小白的一个简单的邮件服务器,我们直接用系统用户作为认证用户,没有配置mysql。

二、域名解析

在域名服务提供商那里设置域名解析,example.com 设置了3个域名解析:

第一个是 :A记录, RR值为 @ , 指向 服务器的IP地址

第二个是:MX记录, RR值为@, 指向 example.com

第三个是:A记录,RR值为 www, 指向服务器的IP地址

配置完毕后, ping www.example.com 如果能提示出你的服务器的IP地址, 证明 www的配置已经生效。

下来还要检查 MX 记录是否生效, 要用nslookup检查一下是否MX记录正确。

在windows系统的命令行控制体输入 : nslookup -qt=mx linuxidc.com 回车后,

能显示你的域名 example.com , 就代表你的 MX记录配置正确。

如果MX记录配置不正确, 那用邮箱发邮件, 你就会收到个退信, 退信原因的内容如下 :

收件人(lLee@example.com)所属域名不存在,邮件无法送达。Name service error for name=linuxidc.com type=MX: Host found but no data record of requested type

三、安装配置postfix+dovecot+cyrus.sasl

系统架构就是这样的 MTA : Postfix

认证模块:Cyrus SASL + Dovecot SASL

POP3/IMAP: Dovecot

安装: Yum install postfix dovecot

Yum.install cyrus*

有一般邮件系统的知识的人知道,需要采用认证机制防止谁都可以用这个MTA发送邮件(open relay)。这个认证机制就是SASL,这里我所接触到的两个sasl软件:Cyrus-SASL和Dovecot中自有的SASL。

Cyrus-SASL:这个软件的使用saslauthd这个daemon来进行验证,具体的配置件可以查看/etc/sysconfig/saslauthd这个配置件。

MECH=pam:使用什么机制来进行验证,这里写的是使用PAM来进行验证。PAM,这个以后有机会再进行论述。

Dovecot-SASL: 这个软件是dovecot对SASL的一个实现,Dovecot官网中提Dovecot也实现了SASL。

Dovcecot-SASL有两个部分,一个是passdb,一个是userdb, passdb用来实现认证,userdb用来实现提取用户的一些信息,比如邮件存储目录,uid等。

相关的配置可以在/etc/dovecot/dovecot.conf中找到。

认证过程也是先通过passdb认证,然后在userdb中获取用户信息,从而把该用户的邮件递送给该MUA,然后用户就可以读取邮件了。

postfix的main.cf这个件中有个SASL的选项,此处直接设置为smtpd_sasl_type=dovecot

此处即是sasl使用dovecot的sasl进行验证。即发送邮件时,去dovecot验证,如果通过,就允许邮件发送了。因此,我们只要熟悉了dovecot的sasl怎么做的,就可以不用管postfix的验证了。

然后呢,我们根据网上的配置dovecot的sasl验证代码进行测试,始终没能成功,于是,我们就绕过了这个。

以下是相关的postfix和dovecot简单配置:

vi /etc/postfix/main.cf

#begain
#smtpd_sasl_type=dovecot
#smtpd_sasl_path=private/auth
smtpd_sasl_auth_enable=yes
broken_sasl_auth_clients=yes
smtpd_delay_reject=no
smtpd_sasl_local_domain=$mydomain
smtpd_sasl_security_options=noanonymous
smtpd_client_restrictions=permit_sasl_authenticated
message_size_limit=5242880
smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
#end

vi /etc/dovecot/dovecot.conf

protocols=imap pop3
log_path=/var/log/dovecot.log
info_log_path=/var/log/dovecot.info
login_trusted_networks=0.0.0.0/0
listen=*, ::
disable_plaintext_auth=yes
ssl_disable=no
mail_location=Maildir:~/Maildir
base_dir=/var/run/dovecot/

vi /etc/sasl2/smtpd.conf

pwcheck_method: saslauthd
mech_list: plain login
log_level:3
saslauthd_path:/var/run/saslauthd/mux


四、检测各种配置是否成功

1、查看mta

#alertnatices --display mta



2、检测postfix与dovecot

状态:service postfix status | service dovecot status

重启: service postfix|dovecot restart

有时候会出现:

这是centos版本问题,直接使用它提示的命令即可。

3、检测默认smtp端口25是否已经监听

Netstat -an | grep 25

五、遇到的问题

1、本地客户端与电子邮件服务器无法连接



我们这次遇到的问题就是:服务器防火墙25和110端口,没有打开。

解决方案:

CentOS防火墙iptables的配置方法详解

查看当前所有的iptables配置: iptables -L -n

添加允许INPUT访问规则,以下时常见服务的端口设置,如果需要拒绝访问,则将ACCEPT改为DROP即可

#SSH

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

#HTTP

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

iptables -A INPUT -p tcp --dport 8080 -j ACCEPT

#HTTPS

iptables -A INPUT -p tcp --dport 443 -j ACCEPT

#POP3

iptables -A INPUT -p tcp --dport 110 -j ACCEPT

#SMTP

iptables -A INPUT -p tcp --dport 25 -j ACCEPT

#FTP

iptables -A INPUT -p tcp --dport 21 -j ACCEPT

iptables -A INPUT -p tcp --dport 20 -j ACCEPT

#DNS

iptables -A INPUT -p tcp --dport 53 -j ACCEPT

保存修改:/etc/rc.d/init.d/iptables save

重启iptables:service iptables restart

开机启动 | 关闭: chkconfig iptables on chkconfig iptables off

或者直接修改配置件:

vi /etc/sysconfig/iptables



2、认证不被允许:

-ERR Plaintext authentication disallowed on non-secure (SSL/TLS) connections.

pop3-login: Info: Aborted login (tried to use disallowed plaintext auth): user=<>, rip=*,*,*,*, lip=*,*,*,*, session=<OHcXkcc6EgB5Kpmb>

解决方案:


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: