常用的邮箱
邮箱地址的格式
邮件是我们互联网上是最基本的服务之一,诞生很早,用非常广泛,发展迅速。
工作模式:
A--- S ---B
寄信 收信
邮件服务器也采用的是C/S工作模式,通过SMTP,POP,IMAP协议来是实现邮件的发送和接收的。
电子邮件在互联网上是如何传输的:
每个邮件系统主要由3部分组成:
MUA (mail user Agent) 负责写信收信
MTA(mail transfer Agent)负责信件寄送
MDA (mail Delivery Agent) 投递者负责将信件放在指定的目的地
Baidu.com
Mime
MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。
是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件
被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些
客户端自定义的文件名,以及一些媒体文件打开方式。它是一个互联网标准,
扩展了电子邮件标准,使其能够支持。
三种协议:
POP3
POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,它规定怎样将个人计算机连接到
Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,
POP3协议允许电子邮件客户端下载服务器上的邮件,但是在客户端的操作(如移动邮件、标记已读
等),不会反馈到服务器上,比如通过客户端收取了邮箱中的3封邮件并移动到其他文件夹,邮箱服务
器上的这些邮件是没有同时被移动的 。110
(与IMAP有什么区别?)
是从邮件服务器中下载邮件存起来支持不在线用户,基于TCP/IP,明文,使用110端口 问题:不能同步
IMAP
IMAP全称是Internet Mail Access Protocol,即交互式邮件存取协议,
它是跟POP3类似邮件访问标准协议之一。不同的是,开启了IMAP后,您在电子邮件客户端收
取的邮件仍然保留在服务器上,同时在客户端上的操作都会反馈到服务器上,如:删除邮件,
标记已读等,服务器上的邮件也会做相应的动作。所以无论从浏览器登录邮箱或者客户端软件
登录邮箱,看到的邮件以及状态都是一致的。(与POP3有什么区别?)
将邮件留在服务器端直接对邮件进行管理、操作,比POP3更先进支持邮件头部预览主题
来源,基于TCP/IP,使用143端口
POP3 和 imap 区别
1.IMAP客户端上收取邮件后邮件依旧保留在服务器上,同时在客户端上的操作也会保留在服务器端,POP3不会
2.IMAP更好的支持从多个设备中随时访问新邮件
3.IMAP提供的摘要游览功能可以让你阅读完所有的邮件到达时间、主题、发件人、大小等信息后才作初是否下载的决定。
4.pop3需要下载所有的邮件,IMAP不能将所有的邮件下载,而是通过客户端直接对服务器上的邮件进行操控。所有的IMAP
可以对数据进行加密从而保证通信安全。
5.IMAP整体上为用户带来了更为便捷和可靠的的体验 ----pop3 更容易丢失邮件或者多次重复下载相同的邮件。
SMTP
SMTP 的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地
址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,
它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议
的发送邮件服务器。 SMTP 认证,简单地说就是要求必须在提供了账户名和密码之后才可以登
录 SMTP 服务器,这就使得那些垃圾邮件的散播者无可乘之机。 增加 SMTP 认证的目的是为了
使用户避免受到垃圾邮件的侵扰。
ESMTP:(Extended SMTP) 是对标准 SMTP 协议进行的扩展。它与 SMTP 服务的区别仅仅是,使
用 SMTP 发信不需要验证用户帐户,而用 ESMTP 发信时,服务器会要求用户提供用户名和密码
以便验证身份。在所有的验证机制中,信息全部采用Base64编码。验证之后的邮件发送过程与
SMTP 方式没有两样。
流程
两个不同的域的用户进行邮件收发
使用客户端或者编辑器写邮件发送到自己域内的邮件服务器
邮件服务器通过域内的客户端发送邮件到目标域
客户端通过DNS查询MX记录和A记录解析对方的IP地址,多个MX记录就找优先级高的
目标服务端的服务正常监听在指定端口上来接收客户端的请求
确认邮件的目标用户是否在本域
如果在域内,通过邮件投递代理把邮件存放到指定的邮件目录
该用户登录系统后进行邮件检测,然后收取邮件即可
常用端口:
25 smtp:发送邮件
110 pop3: 接收邮件
143 imap:接收邮件
995 pop3s
993 imaps
465 smtps
认证协议
SASL Simple Authintication Secure Layer
SASL全称Simple Authentication and Security Layer,是一种用来扩充C/S模式验证能力的机制。在Postfix可以利用SASL来判断用户是否有权使用转发服务,或是辨认谁在使用你的服务器。
必须有
服务器
客户端
提供形式:
免费的邮件服务 干扰 (广告,域名不能自定义) 不安全 没有保障
租用的邮件服务 可以自定义域名 自定义管理(通讯录) 自定义功能
系统界面简易,系统配置由运营商完成;企业IT人员只需要进行用户管理及日常运行监控。故障维护响应速度慢。
只提供简单的邮件收发、网络硬盘等功能,企业管理员权限低,受限制大,不能针对各项系统配置进行调整。
每个用户只有限定的空间大小,邮箱使用受到限制。若需扩大邮箱空间,需要向服务商购买。
邮件存储在运营商的服务器,存在泄密的风险、数据管理和备份权限低,数据管理权限受到多方限制,存在安全隐患。
国内品牌租用邮箱大多数都通过代理商做,客户很难找到厂家的技术进行咨询。系统维护更多依靠自己的技术力量进行。
成本高,对于长期使用的企业,每年需要支付相当的企业邮箱租用费用,长期以往,成本更高。
自建的邮件服务 数据在本地 功能(邮件过滤 附件大小 邮件备份 垃圾邮箱处理 )
如今很多邮件服务商都针对企业推出免费或收费邮箱,但企业依然有自建邮件系统的必要性,表现在以下几个方面:
首先,有助于提升企业形象。自建邮件系统后,企业邮件会以企业网站域名作为后缀的电子邮件地址,具有非常强的企业性质,
有利于企业树立形象,增加客户信任度。
其次,管理方便,可控性强。相比免费邮箱服务,企业自建邮件系统可以根据需求自行设置存储空间,以及子帐号数量和级别设定,
可自由命名,分配容量,自行群发、分组、修改密码、设定功能限制等。同时可以在人员调动时,随时将账号回收,重新分配,
在一定程度上避免泄露企业机密。
第三,从稳定性和安全性考虑,自建邮件系统优势明显,比如可以根据企业需求自行定制邮件服务器和带宽,还可以通过内部的
邮件备份保证数据安全。
官方网站
mail格式:
SMTP 协议命令
HELO 通报来访者地址
MAIL FROM 发件人地址
RCPT TO 收件人地址
DATA 输入正文内容,用单独的点为行结束
QUIT 连线结束
案例一:mail命令使用方法
###########################################
#写邮件给redhat
mail to redhat
#输入邮件的主题,冒号前的为提示信息
Subject:test
#输入主题后会返回空白提示,输入邮件内容
mail body,mail content.
#按下CTRL+d按键保存发送,回显一个标记
EOT
到redhat用户查收邮件
su - redhat
#使用mail命令查看自己的邮件,返回以下信息:
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/redhat": 1 message 1 new
>N 1 root Sun Apr 24 02:18 19/640 "test"
&_(下划线为提示符)
#输入1查看编号为1的邮件
1
Message 1:
From root@localhost.localdomain Sun Apr 24 02:18:54 2016
Return-Path: <root@localhost.localdomain>
X-Original-To: redhat
Delivered-To: redhat@localhost.localdomain
Date: Sun, 24 Apr 2016 02:18:54 +0800
To: redhat@localhost.localdomain, to@localhost.localdomain
Subject: test
User-Agent: Heirloom mailx 12.5 7/5/10
Content-Type: text/plain; charset=us-ascii
From: root@localhost.localdomain (root)
Status: R
& _(下划线为提示符)
############################################################################################
2、邮件群发
案例2:以root发送 workgroup组中的用户都可以收到邮件
#编辑文件
vim /etc/aliases
#加入以下内容
workgroup: maomao,xixi,redhat
workgroup1: redhat,xixi
#使用postalias命令将别名文件转换成数据库
[root@mail ~]# postalias /etc/aliases
ll /etc/aliases*
useradd maomao /xixi /redhat
# mail to workgroup
#su - xixi
#su - redha
############################################################################################
案例二:搭建邮件服务器
搭建环境:
今天我们要在linux7.2 版本上搭建基于Postfix SASL 以及Dovecot搭建一个功能完整的邮件服务器。
客户端我们通过使用FIXmail
Postfix 发送邮件服务
SASL 全称Simple Authentication and Security Layer,是一种用来扩充C/S模式验证能力的机制。
在Postfix可以利用SASL来判断用户是否有权使用转发服务,或是辨认谁在使用你的服务器。
Dovecot 接受邮件服务
2.1 域内互访:域间收发
安装使用,默认已经安装
yum install postfix -y
#主配置文件
/etc/postfix/main.cf 主配文件
/etc/postfix/master.cf 运行参数配置文件
/etc/postfix/access 邮件SMTP服务的访问控制文件
/etc/postfix/canonical 邮件服务的规范表格格式
/etc/postfix/generic 邮件服务的一般的表格格式
/etc/postfix/header_checks 邮件服务的内置内容的检查
/etc/postfix/relocated 迁移
/etc/postfix/transport
/etc/postfix/virtual 虚拟别名库文件
Vim /etc/postfix/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 检查邮件有的 设置
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 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 自述目录位置
1、配置postfix服务
#配置邮件服务器主机名
76 myhostname = mail.baidu.com
#配置域名(这个邮件服务器管理的是哪个区域范围的邮件发送)
83 mydomain = baidu.com
#指定邮件发送时的域名
99 myorigin = $mydomain
#指定网络接口(默认只监听本地但是如果要与外界通信那么就要监听所有地址)
113 inet_interfaces = all
116 注释掉
#指定服务器的目标区域 设置邮件可以发送到哪些域名
164 mydestination = $myhostname, localhost.$mydomain, localhost,$mydomain
#指定允许网络网段地址,设置信任的邮件客户端地址
264 mynetworks = 192.168.221.0/24
#转发域 设置邮件转发到哪去
296 relay_domains = $mydestination
2.配置dovecot服务
dovecot: 邮件接收服务器
#配置dovecot主配置文件
[root@localhost ~]# vi /etc/dovecot/dovecot.conf (本地邮件传输协议)
24 protocols = imap pop3 lmtp
48 login_trusted_networks = 192.168.171.0/24 允许登录接受的ip段
#配置dovecot子配置文件
[root@localhost ~]# vi /etc/dovecot/conf.d/10-mail.conf
30 mail_location = mbox:~/mail:INBOX=/var/mail/%u
添加用户之后,需要在用户目录下建立INBOX文件夹,否则后面在收信的时候会报错。
然后用mkdir /home/mail/.imap/INBOX -p命令创建文件夹。
vim /etc/skel/.bash_profile
if [ ! -d ~/mail/.imap/INBOX ];then
mkdir -p ~/mail/.imap/INBOX
fi
注意:有的系统可能没有权限;
chmod 0600 /var/mail/*
如果不执行上面这个命令,可能会出现在系统中可以收到邮件,但是客户端无法收到邮件,
注意查看系统/var/log/maillog日志
yum install cyrus-sasl
2.1 开启SASL认证
配置SASL全称Simple Authentication and Security Layer,是一种用来扩充C/S模式验证能力的机制。
在Postfix可以利用SASL来判断用户是否有权使用转发服务,或是辨认谁在使用你的服务器。
开启SASL认证sasl auth model
编辑main.cf配置文件,
[root@localhost ~]# vi /etc/postfix/main.cf
开启SASL认证
vim /etc/postfix/main.cf
编辑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接收限制l认证,允许mynetworks,拒绝unauth目的地
#配置完成后,重启以下服务
systemctl restart postfix
systemctl restart dovecot
systemctl restart saslauthd
在window安装foxmail
在window上打开foxmail
tail -f /var/log/maillog
############################################################################################
3.域外互访
实验环境:两台虚拟机
1、配置qq.com域
在第二台虚拟机中
yum install dovecot *sasl -y
###配置postfix服务
[root@localhost ~]# vi /etc/postfix/main.cf
76 myhostname = mail.qq.com
83 mydomain = qq.com
99 myorigin = $mydomain
113 inet_interfaces = all
164 mydestination = $mydomain,$myhostname
264 mynetworks = 192.168.171.0/24
296 relay_domains = $mydestination
###开启SASL认证
#编辑postfix配置文件
[root@localhost ~]# vi /etc/postfix/main.cf
#追加如下内容:
broken_sasl_auth_clients = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
###配置dovecot服务
#配置dovecot主配置文件
[root@localhost ~]# vi /etc/dovecot/dovecot.conf
24 protocols = imap pop3 lmtp
48 login_trusted_networks = 192.168.171.0/24
#配置dovecot子配置文件
[root@localhost ~]# vi /etc/dovecot/conf.d/10-mail.conf
30 mail_location = mbox:~/mail:INBOX=/var/mail/%u
#配置用户环境变量文件
[root@localhost ~]# vi /etc/skel/.bash_profile
#追加如下内容:
if [ ! -d ~/mail/.imap/INBOX ];then
mkdir -p ~/mail/.imap/INBOX
fi
注意:有的系统可能没有权限;
chmod 0600 /var/mail/*
2、配置DNS服务器 yum install bind -y
-------------------------------------------------------------------------------------
baidu主机:
Vim /etc/named.conf
options {
listen-on port 53 { 192.168.221.134; };
directory "/var/named";
};
zone "baidu.com" IN {
type master;
file "named.baidu.com";
};
zone "221.168.192.in-addr.arpa" IN {
type master;
file "named.192.168.221";
};
-------------------------------------------------------------------------------
Vim /var/named/named.baidu.com
$TTL 1D
@ IN SOA @ admin.baidu.com. (
0
1D
1H
1W
3H )
IN NS ns.baidu.com.
IN MX 10 mail.baidu.com.
ns IN A 192.168.221.134
mail IN A 192.168.221.134
------------------------------------------------------------------------------
Vim /var/named/named.192.168.221
$TTL 1D
@ IN SOA @ admin.admin.com. (
0
1D
1H
3W
1H )
IN NS ns.baidu.com.
IN MX 10 mail.baidu.com.
134 IN PTR ns.baidu.com.
134 IN PTR mail.baidu.com.
------------------------------------------------------------------------------
qq域的主机
··································································································
options {
listen-on port 53 { 192.168.221.128; };
directory "/var/named";
};
zone "qq.com" IN {
type master;
file "named.qq.com";
};
zone "221.168.192.in-addr.arpa" IN {
type master;
file "named.192.168.221";
};
·······························································································
Vim /var/named/named.qq.com
$TTL 1D
@ IN SOA @ admin.admin.com. (
0
1D
1H
1W
3H )
IN NS ns.qq.com.
IN MX 10 mail.qq.com.
ns IN A 192.168.221.128
mail IN A 192.168.221.128
·································································································
$TTL 1D
@ IN SOA @ admin.admin.com. (
0
1D
1H
1M
3H )
IN NS ns.qq.com.
IN MX 10 mail.qq.com.
128 IN PTR ns.qq.com.
128 IN PTR mai.qq.com.
············································································································
四、支持SSL访问:
cd /etc/postfix
#openssl生成CA认证的一个私钥工具
-keyout 生成证书签署的文件
openssl req -new -x509 -nodes -out smtpd.pem -keyout smtpd.pem -days 365
86
shaanxi
xi'an
openlab
rhce
mail.baidu.com
编辑/etc/postfix/main.cf文件 (功能的参数,功能的特点)
安全传输层协议(TLS)用于在两个通信应用程序之间提供保密性和数据完整性。
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_CAfile = /etc/postfix/smtpd.pem
smtpd_tls_cert_file = /etc/postfix/smtpd.pem
smtpd_tls_key_file = /etc/postfix/smtpd.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes 标准
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
编辑/etc/postfix/master.cf文件,去掉以下内容的注释: (主配置文件的主配置文件功能的开关方法)
#smtps inet n - n - - smtpd
# -o smtpd_tls_wrappermode=yes 安全传输的包装层模块
# -o smtpd_sasl_auth_enable=yes 安全传输认证开启
重启服务
systemctl restart postfix
dovecot
saslauthd
打开foxmail账号管理----账号 ---将ssl端口选中改变加密端口,
可以实现加密之间的账户和加密和非加密之间的账户可以互相发送邮件
四、虚拟别名域
###在两个域的主配置文件中添加如下内容:
[root@mail ~]# vi /etc/postfix/main.cf
virtual_alias_domains = group.com, work.com
virtual_alias_maps = hash:/etc/postfix/virtual ---映射
###在虚拟别名域中添加如下内容
#vim /etc/postfix/virtual
#baidu域的虚拟别名
@group.com @baidu.com #group对应的是baidu域
@work.com @qq.com #work对应的是qq域
admin@group.com maomao,xixi,redhat,doudou@work.com,xiaodou,dadou@work.com,doudou@work.com,xiaodou@work.com
123@group.com maomao,xixi #如果是本域用户不需要加后缀。
234@work.com doudou@work.com,xiaodou@work.com
#postmap /etc/postfix/virtual 更新文件
#qq域的虚拟别名
@group.com @baidu.com
@work.com @qq.com
123@group.com maomao@group.com,xixi@group.com
234@work.com doudou,xiaodou
admin@group.com maomao@group.com,xixi@group.com,redhat@group.com,dadou,doudou,xiaodou
#postmap /etc/postfix/virtual
###每次改变该文件,需要执行以下两个命令
#重新生成虚拟别名域数据库
[root@mail ~]# postmap /etc/postfix/virtual
#重新加载虚拟别名域数据文件
[root@mail ~]# systemctl reload postfix
#测试
以一个用户身份发送邮件给设定好的虚拟用户发送邮件
实现以下需求:
1、baidu公司提供www.baidu.com网站服务,页面显示内容“It's www.baidu.com”,网站根目录在/www/html目录,网站通过www2.baidu.com也可以正常访问;
2、baidu公司同时提供邮件服务,邮件服务器地址为mail.baidu.com;
3、baidu公司有三个用户,xixi,maomao和haha可以和qq公司的邮件互相收发。
4、要求每次发给xixi用户的所有邮件同时haha用户也可以收到。
5、qq公司提供www.qq.com网站服务,页面显示内容“It's www.qq.com”,网站根目录在/www/html目录,网站通过web.qq.com也可以正常访问;
6、qq公司同时提供邮件服务,邮件服务器地址为mail.qq.com,可以和baidu公司的邮件服务器互相收发;
7、qq公司有三个用户,zhangsan,lisi和wangwu,
8、baidu公司和qq公司通过第三方DNS服务器进行域名解析,该域名解析服务同时需要同时满足两个公司的解析需求。
9、baidu和qq提供的所有服务器均走加密协议,包括web服务器和mail服务器