欢迎光临
专业Linux运维二十年

CentOS 7.2部署邮件服务器(Postfix)

一、Postfix简介

Postfix 是一种电子邮件服务器,它是由任职于IBM华生研究中心(T.J. Watson Research Center)的荷兰籍研究员Wietse Venema为了改良sendmail邮件服务器而产生的。最早在1990年代晚期出现,是一个开放源代码的软件。
Postfix 官方网站:http://www.postfix.org/
Postfix 下载地址:http://www.postfix.org/download.html

二、Postfix安装

安装Postfix以配置SMTP服务器
[1] 即使CentOS系统安装了[最小安装],也会安装Postfix,但如果Postfix不安装,请先安装它,如下所示。
[root@linuxprobe ~]# yum -y install postfix

[2] 此示例显示配置SMTP-Auth以使用Dovecot的SASL函数。

?
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
[root@linuxprobe ~]
# vi /etc/postfix/main.cf
# line 75: uncomment and specify hostname
 
myhostname = linuxprobe.srv.world
# line 83: uncomment and specify domain name
 
mydomain = srv.world
# line 99: uncomment
 
myorigin = $mydomain
# line 116: change
 
inet_interfaces = all
# line 164: add
 
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
# line 264: uncomment and specify your local network
 
mynetworks = 127.0.0.0
/8
, 10.0.0.0
/24
# line 419: uncomment (use mailboxdir)
 
home_mailbox = mailbox/
# line 574: add
 
smtpd_banner = $myhostname ESMTP
# add follows to the end
 
# limit an email size for 10M
 
message_size_limit = 10485760
 
# limit a mailbox for 1G
 
mailbox_size_limit = 1073741824
# for SMTP-Auth
 
smtpd_sasl_type = dovecot
smtpd_sasl_path = private
/auth
smtpd_sasl_auth_enable =
yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject
 
[root@linuxprobe ~]
# systemctl restart postfix
[root@linuxprobe ~]
# systemctl enable postfix

[3]如果Firewalld正在运行,请允许SMTP服务。 SMTP使用25 / TCP。

?
1
2
3
4
[root@dlp ~]
# firewall-cmd --add-service=smtp --permanent
success
[root@dlp ~]
# firewall-cmd --reload
success

三、Dovecot 安装

安装Dovecot以配置POP / IMAP服务器
[1] 安装Dovecot.
[root@linuxprobe ~]# yum -y install dovecot

[2] 此示例显示配置为向Postfix提供SASL功能 .

?
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
26
27
[root@linuxprobe ~]
# vi /etc/dovecot/dovecot.conf
# line 24: uncomment
protocols = imap pop3 lmtp
# line 30: uncomment and change ( if not use IPv6 )
listen = *
[root@linuxprobe ~]
# vi /etc/dovecot/conf.d/10-auth.conf
# line 10: uncomment and change ( allow plain text auth )
disable_plaintext_auth = no
# line 100: add
auth_mechanisms = plain login
[root@linuxprobe ~]
# vi /etc/dovecot/conf.d/10-mail.conf
# line 30: uncomment and add
mail_location = maildir:~
/Maildir
[root@linuxprobe ~]
# vi /etc/dovecot/conf.d/10-master.conf
# line 96-98: uncomment and add like follows
# Postfix smtp-auth
unix_listener
/var/spool/postfix/private/auth
{
 
mode = 0666
 
user = postfix
 
group = postfix
}
[root@linuxprobe ~]
# vi /etc/dovecot/conf.d/10-ssl.conf
# line 8: change (not require SSL)
ssl = no
 
[root@linuxprobe ~]
# systemctl start dovecot
[root@linuxprobe ~]
# systemctl enable dovecot

[3] 如果Firewalld正在运行,请允许POP / IMAP服务。 POP使用110 / TCP,IMAP使用143 / TCP.

?
1
2
3
4
[root@vdevops ~]
# firewall-cmd --add-port={110/tcp,143/tcp} --permanent
success
[root@vdevops ~]
# firewall-cmd --reload
success

四、SSL设置

配置SSL以加密连接
[1] 首先创建证书

[2] 为SSL配置Postfix和Dovecot。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# add to the end
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_session_cache_database = btree:
/etc/postfix/smtpd_scache
[root@linuxprobe ~]
# vi /etc/postfix/master.cf
# line 26-28: uncomment
smtps  inet n  -  n  -  -  smtpd
 
-o syslog_name=postfix
/smtps
 
-o smtpd_tls_wrappermode=
yes
[root@linuxprobe ~]
# vi /etc/dovecot/conf.d/10-ssl.conf
# line 8: change
ssl =
yes
# line 14,15: specify certificates
ssl_cert = <
/etc/pki/tls/certs/server
.crt
ssl_key = <
/etc/pki/tls/certs/server
.key
[root@linuxprobe ~]
# systemctl restart postfix dovecot

[3] 如果Firewalld正在运行,请允许SMTPS / POP3S / IMAPS服务。 SMTPS使用465 /
TCP,POP3S使用995 / TCP,IMAPS使用993 / TCP。

?
1
2
3
4
5
6
[root@vdevops ~]
# firewall-cmd --add-service={pop3s,imaps} --permanent
success
[root@vdevops ~]
# firewall-cmd --add-port=465/tcp --permanent
success
[root@vdevops ~]
# firewall-cmd --reload
success

邮件日志报告:pflogsumm

安装pflogsumm这是Postfix日志报告工具
[1] 安装postfix-perl-scripts包 .

?
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
[root@linuxprobe ~]
# yum -y install postfix-perl-scripts
# generate log summary for yesterday
[root@linuxprobe ~]
# perl /usr/sbin/pflogsumm -d yesterday /var/log/maillog
Postfix log summaries
for
Jul 14
Grand Totals
------------
messages
  
2 received
  
5 delivered
  
0 forwarded
  
0 deferred
  
0 bounced
  
0 rejected (0%)
  
0 reject warnings
  
0 held
  
0 discarded (0%)
 
 
2879 bytes received
 
6572 bytes delivered
  
1 senders
  
1 sending hosts
/domains
  
2 recipients
  
2 recipient hosts
/domains
Per-Hour Traffic Summary
------------------------
 
time  
received delivered deferred bounced  rejected
 
--------------------------------------------------------------------
 
0000-0100   0   0   0   0   0
 
0100-0200   0   0   0   0   0
 
0200-0300   0   0   0   0   0
 
0300-0400   0   0   0   0   0
 
0400-0500   0   0   0   0   0
 
0500-0600   0   0   0   0   0
 
0600-0700   0   0   0   0   0
 
0700-0800   0   0   0   0   0
 
0800-0900   0   0   0   0   0
 
0900-1000   0   0   0   0   0
 
1000-1100   2   5   0   0   0
 
1100-1200   0   0   0   0   0
 
1200-1300   0   0   0   0   0
 
1300-1400   0   0   0   0   0
 
1400-1500   0   0   0   0   0
 
1500-1600   0   0   0   0   0
 
1600-1700   0   0   0   0   0
 
1700-1800   0   0   0   0   0
 
1800-1900   0   0   0   0   0
 
1900-2000   0   0   0   0   0
 
2000-2100   0   0   0   0   0
 
2100-2200   0   0   0   0   0
 
2200-2300   0   0   0   0   0
 
2300-2400   0   0   0   0   0
 
Host
/Domain
Summary: Message Delivery
--------------------------------------
 
sent cnt bytes defers avg dly max dly host
/domain
 
-------- ------- ------- ------- ------- -----------
  
3  4119  0  0.4 s 0.8 s srv.world
  
2  2453  0  0.1 s 0.1 s mail.srv.world
 
Host
/Domain
Summary: Messages Received
---------------------------------------
 
msg cnt bytes host
/domain
 
-------- ------- -----------
  
2  2879 mail.srv.world
 
Senders by message count
------------------------
  
2 cent@mail.srv.world
 
Recipients by message count
---------------------------
  
3 redhat@srv.world
  
2 cent@mail.srv.world
 
Senders by message size
-----------------------
 
2879 cent@mail.srv.world
 
Recipients by message size
--------------------------
 
4119 redhat@srv.world
 
2453 cent@mail.srv.world
 
message deferral detail: none
message bounce detail (by relay): none
message reject detail: none
message reject warning detail: none
message hold detail: none
message discard detail: none
smtp delivery failures: none
Warnings
--------
 
tlsmgr (total: 6)
   
3 redirecting the request to postfix-owned data_directory
/var/li
...
   
3 request to update table btree:
/etc/postfix/smtpd_scache
in
non-...
 
Fatal Errors: none
Panics: none
Master daemon messages
----------------------
  
4 daemon started -- version 2.10.1, configuration
/etc/postfix
  
3 terminating on signal 15
  
1 reload -- version 2.10.1, configuration
/etc/postfix
 
[root@linuxprobe ~]
# crontab -e
# 发送邮件日志摘要在AM每天1:00到根
00 01 * * * perl
/usr/sbin/pflogsumm
-e -d yesterday
/var/log/maillog
| mail -s
'Logwatch for Postfix'
root

脚本之家
赞(0) 打赏
未经允许不得转载:Linux老运维 » CentOS 7.2部署邮件服务器(Postfix)

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫