CentOS 7搭建邮件服务-postfix+dovecot
4
2022-08-08
CentOS 7搭建邮件服务
1、服务介绍
Postfix 是一种电子邮件服务器,它是由任职于IBM华生研究中心(T.J. Watson Research Center)的荷兰籍研究员Wietse Venema为了改良sendmail邮件服务器而产生的。最早在1990年代晚期出现,是一个开放源代码的软件。
1.1、邮件服务类型
POP3、IMAP、SMTP、Exchange1.2、协议
- SMTP:Simple Mail Transfer Protocol/简单邮件传送协议,定义邮件传送,基于TCP服务的应用层,明文传送,SMTP协议使用25端口 。两个邮件服务器之间,客户和邮件服务器之间使用。服务器和服务器之间用来传输邮件,客户端将邮件传输到服务器。
- POP3:Post Office Protocol 3/邮局协议第三版,POP3协议适用于不能实时在线的邮件用户。支持客户在服务器上租用信箱,然后利用POP3协议向服务器请求下载,基于TCP/IP协议与客户端/服务端模型,POP3的认证与邮件传送都采用明文,使用110端口 。客户端和服务器之间使用,用来下载邮件。
- IMAP:Internet Message Access Protocol/英特网信息存取协议,也叫邮件同步协议,另一种从邮件服务器上获取邮件的协议,与POP3相比,支持在下载邮件前先行下载邮件头以预览邮件的主题来源,基于TCP/IP,明文传送,使用143端口
25 smtp 465 smtps 110 pop3 995 pop3s 143 imap 993 imaps
2、环境准备
2.1、防火墙
[root@localhost ~]# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/sysconfig/selinux [root@localhost ~]# getenforce Disabled [root@localhost ~]# systemctl stop firewalld && systemctl disable firewalld [root@localhost ~]# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1)
2.2、时间同步
[root@localhost ~]# crontab -e */1 * * * * /usr/sbin/ntpdate time1.aliyun.com
2.4、修改MTA:默认邮件传输代理
[root@linux03 ~]# alternatives --config mta 共有 1 个提供“mta”的程序。 选项 命令 ----------------------------------------------- *+ 1 /usr/sbin/sendmail.postfix 按 Enter 保留当前选项[+],或者键入选项编号:检查设置是否成功:
mta - 状态为手工。或 mta -status is manual 即可
[root@linux03 ~]# alternatives --display mta mta - 状态为手工。 链接当前指向 /usr/sbin/sendmail.postfix /usr/sbin/sendmail.postfix - priority 30 从 mta-mailq:/usr/bin/mailq.postfix 从 mta-newaliases:/usr/bin/newaliases.postfix 从 mta-pam:/etc/pam.d/smtp.postfix 从 mta-rmail:/usr/bin/rmail.postfix 从 mta-sendmail:/usr/lib/sendmail.postfix 从 mta-mailqman:/usr/share/man/man1/mailq.postfix.1.gz 从 mta-newaliasesman:/usr/share/man/man1/newaliases.postfix.1.gz 从 mta-sendmailman:/usr/share/man/man1/sendmail.postfix.1.gz 从 mta-aliasesman:/usr/share/man/man5/aliases.postfix.5.gz 当前“最佳”版本是 /usr/sbin/sendmail.postfix。
3、安装postfix
CentOS7默认安装postfix,若没有请手动安装
[root@linux03 ~]# rpm -qa | grep postfix postfix-2.10.1-9.el7.aarch64
yum install -y postfix*
4、修改主配置文件main.cf
建议修改之前请先备份
[root@linux03 ~]# cp /etc/postfix/main.cf /etc/postfix/main.cf.bak
[root@linux03 ~]# vim /etc/postfix/main.cf #约第77行修改配置 myhostname = mail.test.com #约第84行修改配置 mydomain = test.com #约第99行修改配置 myorigin = $mydomain #约第113行修改配置 #监听所有网络端口 inet_interfaces = all inet_protocols = all #默认监听本地,注释掉。 #inet_interfaces = localhost #第164行 设置邮件的发送目的地 mydestination = $myhostname,$mydomain #第264行,设置信任网段 mynetworks = 10.211.55.0/24, 10.10.1.0/24 , 10.20.1.0/24 #第296行,转发域 relay_domains = $mydestination #第179行 local_recipient_maps =
查看配置
[root@linux03 ~]# grep -v '^#' /etc/postfix/main.cf | grep -v '^$' | cat -n 1 queue_directory = /var/spool/postfix 2 command_directory = /usr/sbin 3 daemon_directory = /usr/libexec/postfix 4 data_directory = /var/lib/postfix 5 mail_owner = postfix 6 myhostname = mail.test.com 7 mydomain = test.com 8 myorigin = $mydomain 9 inet_interfaces = all 10 inet_protocols = all 11 mydestination = $myhostname,$mydomain 12 local_recipient_maps = 13 unknown_local_recipient_reject_code = 550 14 mynetworks = 10.211.55.0/24, 10.10.1.0/24 , 10.20.1.0/24 15 relay_domains = $mydestination 16 alias_maps = hash:/etc/aliases 17 alias_database = hash:/etc/aliases 18 19 20 debug_peer_level = 2 21 debugger_command = 22 PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin 23 ddd $daemon_directory/$process_name $process_id & sleep 5 24 sendmail_path = /usr/sbin/sendmail.postfix 25 newaliases_path = /usr/bin/newaliases.postfix 26 mailq_path = /usr/bin/mailq.postfix 27 setgid_group = postdrop 28 html_directory = no 29 manpage_directory = /usr/share/man 30 sample_directory = /usr/share/doc/postfix-2.10.1/samples 31 readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES
5、重启并设置自启
[root@linux03 ~]# systemctl restart postfix [root@linux03 ~]# systemctl enable postfix
[root@linux03 ~]# systemctl status postfix ● postfix.service - Postfix Mail Transport Agent Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled; vendor preset: disabled) Active: active (running) since 五 2022-08-05 20:06:31 CST; 43s ago Main PID: 2043 (master) CGroup: /system.slice/postfix.service ├─2043 /usr/libexec/postfix/master -w ├─2044 pickup -l -t unix -u ├─2045 qmgr -l -t unix -u ├─2069 cleanup -z -t unix -u ├─2070 trivial-rewrite -n rewrite -t unix -u └─2072 local -t unix查看端口
[root@linux03 ~]# netstat -anlpt | grep 25 tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 5627/master tcp6 0 0 :::25 :::* LISTEN 5627/master
6、测试发件
mail to user 输入邮件内容 按Ctrl+D发送
[root@linux03 ~]# mail to lisi Subject: Hello! EOT Null message body; hope that's ok [root@linux03 ~]# mail to lisi Subject: hello EOT
切换接收者查看邮件若提示mail :command not found,需要安装软件包
yum -y install mailx测试
[root@linux03 ~]# su - lisi [lisi@linux03 ~]$ mail Heirloom Mail version 12.5 7/5/10. Type ? for help. "/var/spool/mail/lisi": 2 messages 2 new >N 1 root Fri Aug 5 20:10 18/532 "Hello!" N 2 root Fri Aug 5 20:12 22/522 "hello" & #按q退出
7、使用程序邮箱发送邮件
7.1、安装dovecot
yum install dovecot -y
7.2、修改主配置文件dovecot.conf
#第24行取消注释 protocols = imap pop3 lmtp #第30行取消注释 listen = *, :: #第48行修改允许登录接受的网段 login_trusted_networks = 0.0.0.0/0
查看配置
[root@linux03 ~]# grep -v '^#' /etc/dovecot/dovecot.conf | grep -v '^$' protocols = imap pop3 lmtp listen = *,:: login_trusted_networks = 0.0.0.0/0 dict { #quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext #expire = sqlite:/etc/dovecot/dovecot-dict-sql.conf.ext } !include conf.d/*.conf !include_try local.conf
7.3、修改子配置文件
[root@linux03 ~]# vim /etc/dovecot/conf.d/10-mail.conf #第25行取消注释 mail_location = mbox:~/mail:INBOX=/var/mail/%u
[root@linux03 ~]# vim /etc/dovecot/conf.d/10-auth.conf #第10行关闭认证 disable_plaintext_auth = no #第100行 auth_mechanisms = plain login
查看配置文件
[root@linux03 ~]# grep -v '^#' /etc/dovecot/conf.d/10-auth.conf | grep -v '^$' disable_plaintext_auth = no auth_mechanisms = plain login !include auth-system.conf.ext
禁用SSL认证
[root@linux03 ~]# vim /etc/dovecot/conf.d/10-ssl.conf #注释第9行,新增配置 ssl = no #注释第14、15行 #ssl_cert =
开启dovecot日志
[root@linux03 ~]# vim /etc/dovecot/conf.d/10-logging.conf #新增以下配置 nfo_log_path = /var/log/dovecot_info.log debug_log_path = /var/log/dovecot_debug.log
7.4、设置用户密码
[root@linux03 ~]# echo "123456"|passwd --stdin zhangsan 更改用户 zhangsan 的密码 。 passwd:所有的身份验证令牌已经成功更新。 [root@linux03 ~]# echo "123456"|passwd --stdin lisi 更改用户 lisi 的密码 。 passwd:所有的身份验证令牌已经成功更新。
7.5、建立INBOX文件夹
添加用户之后,需要在用户目录下建立INBOX文件夹,否则后面在收信的时候会报错
[root@linux03 ~]# cd /home/zhangsan/ [root@linux03 zhangsan]# mkdir -p /home/mail/.imap/INBOX [root@linux03 zhangsan]# cd /home/lisi/ [root@linux03 lisi]# mkdir -p /home/mail/.imap/INBOX
为了使新创建的用户可以自动创建这个目录,可以修改/etc/skel/.bash_profile文件如下
[root@linux03 ~]# vim /etc/skel/.bash_profile fi if [ ! -d ~/mail/.imap/INBOX ]; then mkdir -p ~/mail/.imap/INBOX fi
修改完成后,使用source使其生效
[root@linux03 ~]# source /etc/skel/.bash_profile
7.6、开启SASL认证
这是一种用来扩充C/S模式验证能力的机制。在Postfix可以利用SASL来判断用户是否有权使用转发服务,或是辨认谁在使用你的服务器。追加认证到postfix主配置文件中
[root@linux03 ~]# vim /etc/postfix/main.cf #在末行增加如下配置 #启用SASL认证 smtpd_sasl_auth_enable = yes #禁止匿名用户 smtpd_sasl_security_options = noanonymous #启用SASL对客户端进行认证 broken_sasl_auth_clients = yes #定义收件人限定 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
7.7、重启服务
[root@linux03 ~]# systemctl restart saslauthd.service Failed to restart saslauthd.service: Unit not found.报错了,没有安装sasl服务
yum install cyrus-sasl-plain
[root@linux03 ~]# vim /etc/sasl2/smtpd.conf pwcheck_method: saslauthd mech_list: plain login log_level:3 [root@linux03 ~]# vim /etc/sysconfig/saslauthd MECH=shadow
7.9、配置named文件
[root@linux03 ~]# vim /var/named/test.com.zone $TTL 1D @ IN SOA dns.test.com. root.test.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS dns.test.com. dns A 10.20.1.2 dhcp CNAME dns.test.com. linux03 A 10.10.1.2 linux02 A 10.10.1.1 linux01 A 10.211.55.201 Win10 A 10.211.55.92 mail A 10.10.1.2 MX 5 test.com. @ A 10.10.1.2 [root@linux03 ~]# systemctl restart named
7.10、本地测试
yum -y install xinetd* telnet*
[root@linux03 ~]# su - lisi 上一次登录:五 8月 5 23:11:54 CST 2022pts/0 上 [lisi@linux03 ~]$ telnet localhost 25 Trying ::1... Connected to localhost. Escape character is '^]'. 220 mail.test.com ESMTP Postfix main from:lisi@mail.test.com 502 5.5.2 Error: command not recognized ^[[A^[[A 502 5.5.2 Error: command not recognized mail from:lisi@test.com 250 2.1.0 Ok rcpt to:zhangsan@test.com 250 2.1.5 Ok data 354 End data with. hello . 250 2.0.0 Ok: queued as 597C7126722 quit 221 2.0.0 Bye Connection closed by foreign host.
8、Windows客户端测试
8.1、通过DHCP获取IP、DNS
C:\Users\luna>ipconfig /renew Windows IP 配置 以太网适配器 以太网: 连接特定的 DNS 后缀 . . . . . . . : test.com IPv6 地址 . . . . . . . . . . . . : fdb2:2c26:f4e4:2:8da6:984c:4256:e650 临时 IPv6 地址. . . . . . . . . . : fdb2:2c26:f4e4:2:111c:6a0a:219d:9d83 本地链接 IPv6 地址. . . . . . . . : fe80::8da6:984c:4256:e650%8 IPv4 地址 . . . . . . . . . . . . : 10.20.1.92 子网掩码 . . . . . . . . . . . . : 255.255.255.0 默认网关. . . . . . . . . . . . . : 10.20.1.2
C:\Users\luna>ipconfig /all Windows IP 配置 主机名 . . . . . . . . . . . . . : 5E53 主 DNS 后缀 . . . . . . . . . . . : 节点类型 . . . . . . . . . . . . : 混合 IP 路由已启用 . . . . . . . . . . : 否 WINS 代理已启用 . . . . . . . . . : 否 DNS 后缀搜索列表 . . . . . . . . : test.com 以太网适配器 以太网: 连接特定的 DNS 后缀 . . . . . . . : test.com 描述. . . . . . . . . . . . . . . : Parallels VirtIO Ethernet Adapter 物理地址. . . . . . . . . . . . . : 00-1C-42-AC-9A-2E DHCP 已启用 . . . . . . . . . . . : 是 自动配置已启用. . . . . . . . . . : 是 IPv6 地址 . . . . . . . . . . . . : fdb2:2c26:f4e4:2:8da6:984c:4256:e650(首选) 临时 IPv6 地址. . . . . . . . . . : fdb2:2c26:f4e4:2:111c:6a0a:219d:9d83(首选) 本地链接 IPv6 地址. . . . . . . . : fe80::8da6:984c:4256:e650%8(首选) IPv4 地址 . . . . . . . . . . . . : 10.20.1.92(首选) 子网掩码 . . . . . . . . . . . . : 255.255.255.0 获得租约的时间 . . . . . . . . . : 2022年8月5日 22:52:30 租约过期的时间 . . . . . . . . . : 2022年8月5日 23:02:29 默认网关. . . . . . . . . . . . . : 10.20.1.2 DHCP 服务器 . . . . . . . . . . . : 10.20.1.2 DHCPv6 IAID . . . . . . . . . . . : 83893314 DHCPv6 客户端 DUID . . . . . . . : 00-01-00-01-2A-7E-E6-1F-00-1C-42-AC-9A-2E DNS 服务器 . . . . . . . . . . . : 10.20.1.2 10.10.1.1 TCPIP 上的 NetBIOS . . . . . . . : 已启用
C:\Users\luna>ping mail.test.com 正在 Ping mail.test.com [10.10.1.2] 具有 32 字节的数据: 来自 10.10.1.2 的回复: 字节=32 时间<1ms TTL=64 来自 10.10.1.2 的回复: 字节=32 时间<1ms TTL=64 来自 10.10.1.2 的回复: 字节=32 时间=1ms TTL=64 来自 10.10.1.2 的回复: 字节=32 时间<1ms TTL=64 10.10.1.2 的 Ping 统计信息: 数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失), 往返行程的估计时间(以毫秒为单位): 最短 = 0ms,最长 = 1ms,平均 = 0ms
8.2、安装Foxmail添加账号


报错:-ERR [SYS/PERM] Permission denied
解决方案:
[root@linux03 ~]# chmod 0600 /var/spool/mail/*

查看刚刚的测试邮件

8.3、发件测试

8.4、添加lisi用户收件测试




- 0
-
分享