Postfix+Dovecot搭建邮件系统

Centos7 默认已经安装postfix软件包

此次实验是采用yum安装,源码编译安装还需安装cyrus-sasl-devel , db*-devel , pam-devel

因为需要Postfix支持SASL认证(通过软件包cyrus-sasl)

1.安装

yum install cyrus-sasl dovecot telnet -y

使用postconf -a 命令 查看输出是否包含 cyrus dovecot 认证方式

2.配置Postfix(发件服务器)110端口

Postfix邮件系统的主要配置文件包括main.cf、master.cf,都位于/etc/postfix/文件夹下。

命令:

postconf 查看当前启用的所有配置

postconf -n 只列出使用非默认值的配置

Postfix邮件系统的控制主要通过/usr/sbin/postfix命令进行,结合start、stop、check、reload选项分别实现启动、停止、检查、重载服务的操作。

2.1 修改配置文件:/etc/postfix/main.cf

1
2
3
4
5
myhostname=main.linux99.cn 主机名
mydomain=linux99.cn 域
inet_interfaces=192.168.1.1 监听地址
mydestination=$mydomain,$myhostname
home_mailbox=Maildir/ 保存路径

修改完配置文件,postfix reload 重新加载

在上述配置中,将mydestination的值设置为“$mydomain,$myhostname”,表示将@linux99.cn和@mail.linux99.cn域作为本地目标域,允许投递到本地邮箱空间。各用户的邮件将被保存到宿主目录下的Maildir/文件夹中。

2.2 添加本地邮箱账号

1
2
3
4
5
6
groupadd mailusers 添加邮箱账号组

useradd -g mailusers -s /sbin/nologin test 创建用户 test
useradd -g mailusers -s /sbin/nologin test1 创建用户 test1

passwd test 修改密码

2.3 SMTP发送邮件测试

1
2
3
4
5
6
7
8
telnet mail.linux99.cn 25 连接到服务器
helo mail.linux99.cn 宣告客户机地址
mail from: test@linux99.cn 告知发件人地址
rcpt to: test1@linux99.cn 告知收件人地址
data 邮件正文
hello.this is a test mail by test
. 正文结束
quit 退出

邮件发送并投递成功以后,可以到服务器中test1用户的宿主目录下进行查看,新接收到的邮件保存在Maildir/new/目录中。

3.配置POP/IMAP收信服务(Dovecot)25端口

为了降低初学难度,这里只使用系统用户认证,而并不使用SSL等安全机制。因此需要修改主配置文件dovecot.conf,将“!include conf.d/*.conf”行改为“!include conf.d/10-auth.conf”,并禁用SSL机制,允许在验证时使用明文的用户名和密码。除此之外,还需要指定邮箱格式及存储位置。

3.1 修改主配置文件

编辑 /etc/dovecot/dovecot.conf

1
2
3
4
5
6
7
!include conf.d/*.conf 修改为 !include conf.d/10-auth.conf

ssl=no 添加

disable_plaintext_auth=no 添加

mail_location=maildir:~/Maildir 添加

ss -ant 查看110.143端口是否监听

3.2 POP3接收邮件测试

1
2
3
4
5
6
7
8
9
10
11
telnet mail.linux99.cn 110

user test1

pass test

list 列出邮件列表

retr 1 查看第一封邮件

quit 断开连接

4.配置SSL

4.1生成自签名SSL证书。

前提是系统已经安装好openssl。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# cd /etc/pki/tls/certs
4.1 # 生成私钥
# make server.key
Enter pass phrase: #输入密码
Verifying - Enter pass phrase: #重复输入密码
#下面这个步骤是删除server.key中的密码
# openssl rsa -in server.key -out server.key
Enter pass phrase for server.key: #输入刚才设置的密码
writing RSA key
4.2 # 生成CSR(证书签名请求)
# make server.csr
# umask 77 ; /usr/bin/openssl req -utf8 -new -key server.key -out server.csr
Country Name (2 letter code) [XX]:CN #国家简称
State or Province Name (full name) []:Beijing #省
Locality Name (eg, city) [Default City]:Beijing #城市
Organization Name (eg, company) [Default Company Ltd]:OPS #公司名
Organizational Unit Name (eg, section) []:OPS #部门名
hostname) []:linux99.cn
Email Address []:mail@linux99.cn
A challenge password []: #直接按Enter
An optional company name []: #直接按Enter
4.3 # 生成自签名证书
# openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 3650
4.4 #设置权限
# chmod 400 server.*

4.2 配置Postfix SSL 465端口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
vi /etc/postfix/main.cf
# 添加如下到末尾。
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/pki/tls/certs/server.crt
smtpd_tls_key_file = /etc/pki/tls/certs/server.key

smtpd_tls_loglevel = 2
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache

vi /etc/postfix/master.cf
# 第26,28行: 去掉注释
smtps inet n - n - - smtpd
-o smtpd_tls_wrappermode=yes

4.3 配置Dovecot SSL 995端口

1
2
3
4
5
6
vi /etc/dovecot/conf.d/10-ssl.conf
# 第8行:
ssl = yes
# 第14,15行:
ssl_cert = </etc/pki/tls/certs/server.crt
ssl_key = </etc/pki/tls/certs/server.key

配置完成后重新启动Postfix和Dovecot

ss -ant 查看端口是否监听 465 993