一、邮件理论知识
1.邮件概念
电子邮件服务是指通过网络传送信件、单据、资料等电子信息的通信方法,它是根据传统的邮政服务模型建立起来的,当我们发送电子邮件时,这份邮件是由邮件发送服务器发出,并根据收件人的地址判断对方的邮件接收器而将这封信发送到该服务器上,收件人要收取邮件也只能访问这个服务器才能完成。
电子邮件服务(Email服务)是目前最常见、应用最广泛的一种互联网服务。通过电子邮件,可以与Internet上的任何人交换信息。电子邮件与传统邮件比有传输速度快、内容和形式多样、使用方便、费用低、安全性好等特点。具体表现在:发送速度快,信息多样化,收发方便,成本低廉。
2.邮件服务器的工作原理
工作原理简介:
-
xdp@sohu.com 用户写好一封Email发送到sohu的Smtp服务器
-
sohu的Smtp服务器开始处理xdp@sohu.com 用户的请求,它会根据收件人的地址判断,当前收件人是不是自己管辖的用户,如果是,就直接将Email存放到为该收件人的分配的邮箱空间当中。sohu的Smtp服务器判断收件人地址发现,这一封Email的收件人gacl@sina.com是Sina的邮件服务器管理的,于是又将Email转发给Sina的Smtp服务器。
-
Sina的Smtp服务器开始处理sohu的Smtp服务器发送过来的Email,Sina的Smtp服务器根据收件人的地址判断,发现收件人自己管辖的用户,于是就直接将Email存放到为gacl@sina.com 用户的分配的邮箱空间当中。
-
xdp@sohu.com 用户将邮件发出去之后,就通知gacl@sina.com 用户去收取。gacl@sina.com 用户于是就连接上Sina的POP3服务器收取邮件。
-
POP3服务器从gacl@sina.com 用户的邮箱空间当中取出Email。
-
POP3服务器将取出来的Email发给gacl@sina.com 用户。
3. 邮件服务器相关组件
- MUA(Mail User Agent):“邮件用户代理”MUA是用在客户端的软件 ,主要的功能就是接收邮件主机的电 子邮件,并提供用户浏览与编写邮件的功能 。
- MDA(Mail Delivery Agent):“邮件投递代理”将MTA接收的信件依照信件的流向(送到哪里)将该信件放 置到本机账户下的邮件文件中(收件箱),或者再经由MTA将信件送到下个MTA MTA(Mail Transfer Agent):MTA是用在邮件主机上的软件,主要的邮件服务器。MTA就是“邮件传送代 理”,负责用户寄信与收信。
- MRA(Mail Retrieval Agent):负责实现IMAP与POP3协议,与MUA进行交互 (Dovecot)
4.邮件服务器协议
- SMTP(Simple Mail Transfer Protocol)传输发送邮件所使用的标准协议 。
- IMAP(Internet Message Access Protocol)接收邮件使用的标准协议之一 。
- POP3(Post Office Protocol 3) 接收邮件使用的标准协议之一 。
5.邮件服务器端口
- SMTP TCP:25 SSL:994
- IAMP TCP:143 SSL:993
- POP TCP:110 SSL:995
6.邮件服务器软件
- Sendmail #早期的Linux系统中,默认使用的发件服务是由Sendmail服务程序提供
- Postfix #相较于Sendmail服务程序,Postfix服务程序减少了很多不必要的配置步骤,而且在稳定性、并发性 方面也有很大改进
- TruboMail
- Coremail
- Exchange #微软
- Extmail #开源
- WebMail #开源
7.邮件客户端软件
- Outlook
- Foxmail
- Mailbox
- Thunderbird
二、Postfix安装及简介
1.postfix 安装
- Postfix安装方式分为RPM包和源码包安装,RHEL6以后默认
- postfix一般已经安装。
[root@localhost ~]# rpm -q postfix
postfix-2.10.1-6.el7.x86_64
2.postfix 简介
- postfix主要目录
- 配置文件目录:/etc/postfix/
- 服务程序目录:/usr/libexec/postfix/
- 邮件队列目录:/var/spool/postfix/
- § incoming、active、deferred
- § hold、corrupt
- 邮件队列子目录:
[root@mail ~]# ll /var/spool/postfix/
total 0
drwx------. 2 postfix root 6 Dec 5 17:19 active
drwx------. 2 postfix root 6 Jun 10 2014 bounce
drwx------. 2 postfix root 6 Jun 10 2014 corrupt
drwx------. 2 postfix root 6 Jun 10 2014 defer
drwx------. 2 postfix root 6 Jun 10 2014 deferred
drwx------. 2 postfix root 6 Jun 10 2014 flush
drwx------. 2 postfix root 6 Jun 10 2014 hold
drwx------. 2 postfix root 6 Dec 5 17:19 incoming
drwx-wx—. 2 postfix postdrop 6 Oct 20 14:04 maildrop
drwxr-xr-x. 2 root root 79 Dec 7 12:05 pid
drwx------. 2 postfix root 256 Dec 7 12:05 private
drwx–x—. 2 postfix postdrop 73 Dec 7 12:05 public
drwx------. 2 postfix root 6 Jun 10 2014 saved
drwx------. 2 postfix root 6 Jun 10 2014 trace
三、邮件服务器配置
#邮件服务器创建
#Postfix+dovecot+Cyrus-sasl(Cyrus-sasl认证函数)
1.发送邮件服务器Postfix配置
1.关闭防火墙和selinux、同步时间
[root@mail ~]# systemctl stop firewalld
[root@mail ~]# setenforce 0
[root@mail ~]# date
Wed Dec 5 16:37:51 CST 2018
[root@mail ~]# date -s 时间 #设置时间,将发送端与服务端时间同步
2.安装Postfix软件
[root@mail ~]# rpm -q postfix
postfix-2.10.1-6.el7.x86_64
[root@mail ~]# yum install postfix-2.10.1-6.el7.x86_64 -y
3.设置Postfix服务器所在主机的主机名
[root@mail ~]# hostnamectl set-hostname mail.cc74.com
[root@mail ~]# hostname
mail.cc74.com #设置成功
[root@mail ~]# vi /etc/hosts #写入本机IP地址和主机名
192.168.192.133 mail.cc74.com
4.设置DNS服务解析
[root@mail ~]# vi /var/named/cc74.com.zone
$TTL 1D
@ IN SOA cc74.com. mail.cc74.com. (
12 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns.cc74.com.
ns IN A 192.168.192.133
mail IN A 192.168.192.133
www IN A 192.168.192.133
news IN A 192.168.192.133
smpt CNAME mail
pop3 CNAME mail
www CNAME mail
[root@mail ~]# host -n -t mx cc74.com 192.168.192.133
Using domain server:
Name: 192.168.192.133
Address: 192.168.192.133#53
Aliases:
cc74.com mail is handled by 10 mail.cc74.com
5.编辑主配置文件 main.cf ,按照表格所示调整基本配置项。
[root@mail ~]# cp /etc/postfix/main.cf{,.bak} #复制到原目录下
#也可以不复制,直接在原文件上操作
[root@mail ~]# vi /etc/postfix/main.cf
默认:# myhostname = host.domain.tld 调整: myhostname = mail.cc74.com
默认:#mydomain = domain.tld 调 整:mydomain = cc74.com
默认:#myorigin = $mydomain 调整:myorigin = $mydomain
默认:inet_interfaces = localhost 调 整:inet_interfaces = all
默认:mydestination = $myhostname,localhost.$mydomain,localhost 调整:mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
默认:#mynetworks = 168.100.189.0/28,127.0.0.0/8 调整: mynetworks = 192.168.192.0/24, 127.0.0.0/8
默认:#relay_domains = $mydestination 调整: 去掉默认行首的注释“#”号
默认:#home_mailbox = Maildir/ 调整:去掉行首 的注释“#”号
6.开启postfix服务
[root@mail ~]# systemctl start postfix
[root@mail ~]# systemctl enable postfix
7.创建用户账号
[root@mail ~]# useradd user1
[root@mail ~]# passwd user1
Changing password for user user1.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@mail ~]# useradd user2
[root@mail ~]# passwd user2
Changing password for user user1.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
8.使用telnet工具进行发邮件测试
#user1给user2发送邮件
[root@mail ~]# telnet localhost 25 #发送邮件的协议端口为25
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 mail.cc74.com ESMTP Postfix
HELO localhost #宣告客户地址,手动输入
250 mail.cc74.com
MAIL FROM:user1@cc74.com #发件人地址
250 2.1.0 Ok
RCPT TO:user2@cc74.com #收件人地址
250 2.1.5 Ok
DATA #传送数据(信件)内容
354 End data with <CR><LF>.<CR><LF>
Subject:Test Mail #邮件主题
HELLO user2!
This is a test mail!
. #最后一个 . 表示内容结束
250 2.0.0 Ok: queued as D3CD0303A8D1
quit #退出
221 2.0.0 Bye
Connection closed by foreign host.
#去/home/user2/Maildir/new/目录下查看user2是否接收到了邮件
[root@mail ~]# ls /home/user2/Maildir/new/
1543727347.Vfd00I2813120M44651.mail.cc74.com
2.接收邮件服务器dovecot配置
1.要启用最基本的Devocot服务,需对文件 /etc/dovecot/dovecot.conf进行修改。
[root@mail ~]# cp /etc/dovecot/dovecot.conf{,.bak}
[root@mail ~]# vi /etc/dovecot/dovecot.conf
#查找以下配置行并将其修改为:
protocols = imap pop3 lmtp //20行:指定本邮件主机所运行的协议
listen = * //26行:监听本机的所有网络接口
login_trusted_networks = 192.168.192.0/24 //38 行:指定允许登 录的网段地址
2.对/etc/dovecot/conf.d/10-mail.conf配置文件进行修改
[root@mail ~]# vi /etc/dovecot/conf.d/10-mail.conf
//查找以下配置行(第24行)并将行首“#”去掉
mail_location = maildir:~/Maildir //指定邮件存储格式和位置
3.启动Dovecot服务并设置为开机自动启动
[root@mail ~]# systemctl start dovecot
[root@mail ~]# systemctl enable dovecot
4.pop3接收邮件测试
[root@mail ~]# telnet localhost 110 #接收有邮件的协议端口为110
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready.
user user2 #验证用户
+OK
PASS 123456 #验证密码
+OK Logged in.
LIST #查看邮件
+OK 3 messages:
1 429
2 1593
3 439
.
RETR 3 #收取查看第1封邮件
+OK 439 octets
Return-Path: <user1@cc74.com>
X-Original-To: user2@cc74.com
Delivered-To: user2@cc74.com
Received: from localhost (localhost [IPv6:::1])
by mail.cc74.com (Postfix) with SMTP id D3CD0303A8D1
for <user2@cc74.com>; Wed, 5 Dec 2018 17:17:56 +0800 (CST)
Subject:Test Mail
Message-Id: <20181205091815.D3CD0303A8D1@mail.cc74.com>
Date: Wed, 5 Dec 2018 17:17:56 +0800 (CST)
From: user1@cc74.com
HELLO user2!
This is a test mail!
.
quit #退出
+OK Logging out.
Connection closed by foreign host.
3. 使用 Office Outlook或Foxmail 收发邮件
此处讲用Foxmail收发邮件。
使用windows客户端测试,前提windows客户端DNS指向DNS 服务器。即要在Windows的hosts文件加上收发端的IP和域名。
-
进入Windows的C:\Windows\System32\drivers\etc,此目录下有hosts文件,在此文件内加入 192.168.192.133 mail.cc74.com。
-
“运行–cmd–ping 192.168.192.133 和 ping mail.cc74.com”看是否正确,如果正确则此时Windows便可与192.168.192.133主机进行邮件发送和接收。
-
打开Foxmail软件,会出现注册界面,将你在虚拟机中创建的用户和密码输入–>“创建”
会自动出现以下界面,–>“创建”
点击 “ 收取 ”,上面我们发送的邮件便接收到了,当然我们也可以在Linux中重新发送一封新的邮件,然后再来Windows查看是否接收成功。
我们也可以在Windows发送邮件,在Linux接收邮件,或发送和接收邮件都在Windows进行。