一.邮件系统
1.邮件系统的组成
MUA:负责写信收信
MTA:负责信件寄送
MDA:投递者负责将信件放在指定的目的地
2.邮件系统的协议
POP3:邮局协议的第3个版本,端口号:110,用于接受邮件
IAMP:交互式邮件存取协议,端口号:143,用于接受邮件
SMTP:简单邮件传输协议,端口号:25,用于发送邮件
3.POP3 和IMAP 区别
(1)IMAP客户端上收取邮件后邮件依旧保留在服务器上,同时在客户端上的操作也会保留在服务器端,POP3不会
(2)IMAP更好的支持从多个设备中随时访问新邮件
(3)IMAP提供的摘要游览功能可以让你阅读完所有的邮件到达时间、主题、发件人、大小等信息后才作初是否下载的决定。
(4)pop3需要下载所有的邮件,IMAP不能将所有的邮件下载,而是通过客户端直接对服务器上的邮件进行操控。所有的IMAP
可以对数据进行加密从而保证通信安全。
(5)IMAP整体上为用户带来了更为便捷和可靠的的体验 ----pop3 更容易丢失邮件或者多次重复下载相同的邮件
二、Postfix邮件服务的配置
1.软件安装
2.配置文件main.cf相关参数
queue_directory = /var/spool/postfix #本地邮件队列路径。队列管理器总共设置了五个做不同用途的队列,包括:输入、活动、等待、故障、保留。每个队列在queue_directory
参数指定的路径下各有一个专属的子目录。默认的队列目录是/var/spool/postfix/。
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix #所有在master.cf中用到的服务程序存放的路径
data_directory = /var/lib/postfix #存放缓存。随机数等可写的书籍文件存放位置
mail_owner = postfix
default_privs=nobody #本地投递代理的运行身份即权限
myhostname=host.domain.tld #设置邮件服务器的完全合格的域名
mydomain=domian.tld #本地域名
myorigin=$mydomain #发送邮件时设置的发件人的域名
inet_interfaces = localhost # 设置postfix从哪个接口接受邮件
inet_protocols = all
mydestination = $myhostname, localhost.$mydomain, localhost #设置邮件可以发送到哪些域名
unknown_local_recipient_reject_code = 550 #拒绝邮件的错误代码550
mynetworks=168.100.189.0/28,127.0.0.0/8 #设置信任的邮件客户端地址
relay_domains=$mydestination #设置邮件转发到哪去
alias_maps = hash:/etc/aliases #设置别名数据库
alias_database = hash:/etc/aliases
Header_checks=regexp:/etc/postfix/header_checks #检查邮件有的 设置
sendmail_path = /usr/sbin/sendmail.postfix #postfix发送邮件的程序路径
newaliases_path = /usr/bin/newaliases.postfix #postfix完整的别名程序路径
mailq_path = /usr/bin/mailq.postfix #postfix的mailq程序路径
setgid_group = postdrop #设置邮件提交和队列管理的命令
html_directory = no #本地没有安装postfix的html文档
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 #自述目录位置
3.mail命令的使用
mail程序是一个快速、简易的邮件客户端。许多人希望使用更强大的邮件工具,但是在使用命令行或脚本快速收发邮件时,mail相当方便
mailq命令可列出所有待发送邮件
快速发送邮件方法如下:
使用管道命令,一条命令就可以快速发送邮件
[root@CentOS ~]#echo "hi" | mail -s "hello" [email protected]
使用管道重定向,一条命令就可以发送包含文件的邮件
[root@CentOS ~]# cat hello | mail -s "hi" [email protected]
或[root@CentOS ~]# mail -s "hi" [email protected] < hello
常用选项
选项 |
说明 |
-s subject |
设置邮件的主题栏 |
-v |
详细打印邮件发送过程中的交互信息 |
-c address |
设定抄送名单,邮件地址间以逗号隔开 |
-d address |
设定密件抄送名单,邮件地址间以逗号隔开 |
4.服务的启动和停止
[root@CentOS7 ~]# systemctl start postfix
[root@CentOS7 ~]# systemctl stop postfix
[root@CentOS7 ~]# systemctl start dovecot
[root@CentOS7 ~]# systemctl stop dovecot
三.配置案例
1.域内互访
(1)配置postifx服务
[root@CentOS7 ~]# vim /etc/postfix/main.cf
76 myhostname = mail.qq.com #配置邮件服务器主机名
83 mydomain = qq.com #配置域名(这个邮件服务器管理的是哪个区域范围的邮件发送)
99 myorigin = $mydomain #指定邮件发送时的域名
113 inet_interfaces = all #指定网络接口(默认只监听本地,但是如果要与外界通信,那么就要监听所有地址)
164 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain #指定服务器的目标区域,设置邮件可以发送到哪些域名
264 mynetworks = 192.168.1.0/24, 127.0.0.0/8 #指定允许网络网段地址,设置信任的邮件客户端地址
296 relay_domains = $mydestination #转发域,设置邮件转发到哪去
(2)配置dovecot服务
配置dovecot主配置文件
[root@CentOS7 ~]# vim /etc/dovecot/dovecot.conf
24 protocols = imap pop3 lmtp
48 login_trusted_networks = 192.168.1.0/24
配置dovecot子配置文件
[root@CentOS7 ~]# vim /etc/dovecot/conf.d/10-mail.conf
25 mail_location = mbox:~/mail:INBOX=/var/mail/%u
(3)添加用户并设置权限
[root@CentOS ~]# useradd dadou
[root@CentOS ~]# echo 123 | passwd --stdin dadou
[root@CentOS ~]# chmod 0600 /var/mail/*
(4)重启服务
[root@CentOS ~]# systemctl restart postfix
[root@CentOS ~]# systemctl restart dovecot
2.SASL认证
SASL(Simple Authentication and Security Layer),是一种用来扩充C/S模式验证能力的机制。在Postfix可以利用SASL来判断用户是否有权使用转发服务,或是辨认谁在使用你的服务器
编辑main.cf配置文件,开启SASL认证
[root@CentOS ~]# vim /etc/postfix/main.cf
broken_sasl_auth_clients=yes #启用SASL对客户端进行认证
smtpd_sasl_auth_enable=yes #启用SASL认证
smtpd_sasl_security_options=noanonymous #禁用匿名用户
smtpd_recipient_restrictions=permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination #定义收件人限定,允许SAS接受限制认证,允许mynetworks,拒绝unnauth目的地址
3.域外互访
(1)配置postifx服务(另一台)
[root@CentOS ~]# vim /etc/postfix/main.cf
76 myhostname = mail.qq.com
83 mydomain = qq.com
99 myorigin = $mydomain
113 inet_interfaces = all
164 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
264 mynetworks = 192.168.1.0/24, 127.0.0.0/8
296 relay_domains = $mydestination
(2)配置dovecot服务
配置dovecot主配置文件
[root@CentOS ~]# vim /etc/dovecot/dovecot.conf
24 protocols = imap pop3 lmtp
48 login_trusted_networks = 192.168.1.0/24
配置dovecot子配置文件
[root@CentOS~]# vim /etc/dovecot/conf.d/10-mail.conf
25 mail_location = mbox:~/mail:INBOX=/var/mail/%u
(3)重启邮件服务
[root@CentOS ~]# systemctl restart postfix
[root@CentOS ~]# systemctl restart dovecot
(4)配置DNS服务器
编辑主配置文件named.conf
[root@RHEL7 ~]# vim /etc/named.conf
options {
listen-on port 53 { 192.168.1.151; };
directory "/var/named";
};
zone "baidu.com" IN {
type master;
file "named.baidu.com";
};
zone "qq.com" IN {
type master;
file "named.qq.com";
};
区域文件的设定
named.baidu.com(正向)
[root@RHEL7 ~]# vim /var/named/named.baidu.com
$TTL 1D
@ IN SOA @ root.localhost.localdomain. (
0
1D
1H
3W
1H )
IN NS ns.baidu.com.
IN MX 10 mail.baidu.com.
ns IN A 192.168.1.151
mail IN A 192.168.1.151
named.192.168.1(反向)
[root@RHEL7 ~]# vim /var/named/named.192.168.1
$TTL 1D
@ IN SOA @ root.localhost.localdomain. (
0
1D
1H
3W
1H )
IN NS ns.baidu.com.
IN MX 10 mail.baidu.com.
151 IN PTR ns.baidu.com.
151 IN PTR mail.baidu.com.
151 IN PTR ns.qq.com.
151 IN PTR mail.qq.com.
named.qq.com(正向)
[root@RHEL7 ~]# vim /var/named/named.qq.com
$TTL 1D
@ IN SOA @ root.localhost.localdomain. (
0
1D
1H
3W
1H )
IN NS ns.qq.com.
1D
1H
3W
1H )
IN NS ns.qq.com.
IN MX 10 mail.qq.com.
ns IN A 192.168.1.151
mail IN A 192.168.1.151
重启named服务
[root@RHEL7 ~]# systemctl restart named
(5)将两台邮件服务器的DNS均设置为本机IP
[root@CentOS ~]# nmcli connection modify ens33 ipv4.dns 192.168.1.151
[root@CentOS7 ~]# nmcli connection modify ens33 ipv4.dns 192.168.1.151