1. 邮件系统的简单介绍:
电子邮件系统基于邮件协议来完成电子邮件的传输,常见的邮件协议有下面这些。
简单邮件传输协议(Simple Mail Transfer Protocol,SMTP):用于发送和中转发出的电子邮件,占用服务器的25/TCP端口。
邮局协议版本3(Post Office Protocol 3):用于将电子邮件存储到本地主机,占用服务器的110/TCP端口。
Internet消息访问协议版本4(Internet Message Access Protocol 4):用于在本地主机上访问邮件,占用服务器的143/TCP端口。
一个最基础的电子邮件系统肯定要能提供发件服务和收件服务,为此需要使用基于SMTP协议的Postfix服务程序提供发件服务功能,并使用基于POP3协议的Dovecot服务程序提供收件服务功能。这样一来,用户就可以使用Outlook Express或Foxmail等客户端服务程序正常收发邮件了。
2. 准备环境:
2.1服务器准备
首先我们检查我们的服务器能否telnet通我们要发送的一些邮件服务商的端口,比如qq,163,gmail等。
telnet smtp.qq.com 25
正常的情况是:
Trying 203.205.232.7...
Connected to smtp.qq.com.
Escape character is '^]'.
220 newxmesmtplogicsvrszb6.qq.com XMail Esmtp QQ Mail Server.
如果不通的话需要更换服务器,因为此服务器商将这些给拦截了。
需要放开的端口:25(SMTP服务,用于发送邮件),110(pop3服务,用于接收邮件)143(imap服务,用于接收邮件)
如果我们使用了ssl的话,则需要另外放开:pop3开放465(发件) 995(收件)端口, imap开放465(发件) 993(收件)端口
开放端口命令:
firewall-cmd --add-port=25/tcp --permanent
firewall-cmd --reload
2.2 域名解析配置(例如我的域名是:abc.com)
主机记录 | 记录类型 | 解析路线 | 记录值 |
MX | 默认 | abc.com | |
A | 默认 | IP地址 |
注:TTL值和优先级设置成默认即可。
2.3 修改hostname
hostnamectl set-hostname mail.域名
2.4 修改MTA(默认邮件传输代理)
alternatives --config mta
然后直接回车即可。检查下是否设置成功
alternatives --display mta
第一行可以看到mta的状态。 例如:mat - status is manual.就是ok了。
3. POSTFIX安装及配置
postfix服务程序主配置文件中的重要参数:
参数 | 作用 |
myhostname | 邮局系统的主机名 |
mydomain | 邮局系统的域名 |
myorigin | 从本机发出邮件的域名名称 |
inet_interfaces | 监听的网卡接口 |
mydestination | 可接收邮件的主机名或域名 |
mynetworks | 设置可转发哪些主机的邮件 |
relay_domains | 设置可转发哪些网域的邮件 |
3.1 安装 postfix
在centos7里我们的postfix是系统自带的,但是centos7以前的版本是默认不带的,centos7版本以前是sendmail,安装前移除自带(二选一)。
yum remove postfix* 或者 yum remove senmail*
移除后安装postfix。
yum install postfix
3.2 配置postfix(配置前建议先备份)
vim /etc/postfix/main.cf
修改内容:
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
mail_owner = postfix
myhostname = mail.abc.com
mydomain = abc.com
myorigin = $myhostname
inet_interfaces = all
inet_protocols = ipv4
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
unknown_local_recipient_reject_code = 550
mynetworks = all
relay_domains = $mydestination, 163.com, gmail.com, sina.com, qq.com, foxmail.com, hotmail.com
home_mailbox = Maildir/
debug_peer_level = 2
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
ddd $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-2.10.1/samples
readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES
readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES
#以下是SMTPS配置
smtpd_use_tls = yes
smtpd_tls_cert_file = /root/ssl/server.crt
smtpd_tls_key_file = /root/ssl/private.key
smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache
smtpd_tls_auth_only = yes
smtpd_tls_loglevel = 2
smtpd_tls_security_level=may
smtpd_tls_protocols = !SSLv2, !SSLv3
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject_unauth_pipelining, reject_invalid_hostname, reject_rbl_client cbl.anti-spam.org.cn
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
3.3 编辑文件master.cf (开启ssl后需要配置SMTPS)
vim /etc/postfix/master.cf
修改内容:
#取消注释
smtps inet n - n - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
3.4 开启postfix服务并添加到系统自启。
systemctl restart postfix
systemctl enable postfix
4. 安装并配置dovecot
安装:yum install dovecot
4.1 编辑文件dovecot.conf
vim /etc/dovecot/dovecot.conf
修改内容:
#26行改为 listen = *
4.2 编辑文件10-mail.conf
vim /etc/dovecot/10-mail.conf
修改内容:
# 30行: 取消注释并添加 mail_location = maildir:~/Maildir
4.3 编辑文件10-ssl.conf
vim /etc/dovecot/10-ssl.conf
修改内容:
# 8行: 将ssl的值修改为 ssl = yes
4.4 启动dovecot并添加到开机自启
systemctl restart dovecot
systemctl enable dovecot