Mail 服务器

1. 概念及协议

邮件服务器也采用的是C/S工作模式,通过SMTP,POP,IMAP协议来是实现邮件的发送和接收的。

  • SMTP 的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。 SMTP 认证,简单地说就是要求必须在提供了账户名和密码之后才可以登录 SMTP(postfix) 服务器,这就使得那些垃圾邮件的散播者无可乘之机。 增加 SMTP 认证的目的是为了使用户避免受到垃圾邮件的侵扰。 使用的端口是25,SMTP信件认证协议SMTPS,使用的端口是465

  • POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准, 协议允许电子邮件客户端下载服务器上的邮件,但是在客户端的操作(如移动邮件、标记已读等),不会反馈到服务器上,比如通过客户端收取了邮箱中的3封邮件并移动到其他文件夹,邮箱服务器上的这些邮件是没有同时被移动的 。使用的端口是110,POP3信件认证协议POP3S,使用的端口是995

  • IMAP全称是Internet Mail Access Protocol,即交互式邮件存取协议,它是跟POP3类似邮件访问标准协议之一。不同的是,开启了IMAP后,您在电子邮件客户端收取的邮件仍然保留在服务器上同时在客户端上的操作都会反馈到服务器上,如:删除邮件,标记已读等,服务器上的邮件也会做相应的动作。所以无论从浏览器登录邮箱或者客户端软件登录邮箱,看到的邮件以及状态都是一致的。将邮件留在服务器端直接对邮件进行管理、操作,比POP3更先进支持邮件头部预览主题来源,基于TCP/IP,使用143端口,使用的端口是110,IMAP信件认证协议IMAPS,使用的端口是993

POP3 和 IMAP 区别

1.IMAP客户端上收取邮件后邮件依旧保留在服务器上,同时在客户端上的操作也会保留在服务器端,POP3不会
2.IMAP更好的支持从多个设备中随时访问新邮件
3.IMAP提供的摘要游览功能可以让你阅读完所有的邮件到达时间、主题、发件人、大小等信息后才作初是否下载的决定。
4.pop3需要下载所有的邮件,IMAP不能将所有的邮件下载,而是通过客户端直接对服务器上的邮件进行操控。所有的IMAP可以对数据进行加密从而保证通信安全。
5.IMAP整体上为用户带来了更为便捷和可靠的的体验 ----pop3 更容易丢失邮件或者多次重复下载相同的邮件。

SASL 全称Simple Authentication and Security Layer,是一种用来扩充C/S模式验证能力的机制。在 Postfix可以利用SASL来判断用户是否有权使用转发服务,或是辨认谁在使用你的服务器。

MTA(因特网邮件传送代理;Mail Transfer Agent)指的是来自MUA的信件转发给指定的用户的程序。
用于收发Mail的程序一般统称为邮件用户代理MUA(Mail User Agent)。

2. 工具

本次搭建采用经典搭配:
postfix(作为发送邮件服务器)+dovecot(作为接收邮件服务器)+mysql(作为数据库)

2.1 Postfix

Postfix 是一种电子邮件服务器,它是由任职于IBM华生研究中心(T.J. Watson Research Center)的荷兰籍研究员Wietse Venema为了改良sendmail邮件服务器而产生的。

  • 工作流程图解
    在这里插入图片描述

2.2 dovecot

Dovecot 是一个开源的 IMAP 和 POP3 邮件服务器,支持 Linux/Unix 系统。

2.3 bind

NDS服务设置

3. 搭建

部署 mail 服务的节点规划

IP主机名节点
192.168.70.183mail.testmail.comMail服务器
192.168.70.70masterDNS服务器

3.1 DNS服务设置

DNS详细配置

1)修改 master 节点 bind 配置文件 named.conf

	[root@mail ~]# tail -20 /etc/named.conf
		};
		
		zone "." IN {
		        type hint;
		        file "named.ca";
		};
		//添加内容-起始
		zone "testmail.com" IN {
		        type master;
		        file "testmail.com.zone";
		};
		
		zone "70.168.192.in-addr.arpa" {		#主机网段倒序填写,例如192.168.70.183
		        type master;
		        file "testmail.com.local";
		};
		//添加内容-截止	
		include "/etc/named.rfc1912.zones";
		include "/etc/named.root.key";

2)修改区域解析库文件,添加解析记录

[root@mail named]# cat testmail.com.zone
$TTL 1D
@       IN SOA  testmail.com. admin.testmail.com. (
                                        2023001 ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
            NS      testmail.com.
        IN  MX      10      mail.testmail.com.
        IN  A       192.168.70.183
mail    IN  A       192.168.70.183
[root@mail named]# cat testmail.com.local
$TTL 1D
@       IN SOA  testmail.com. testmail.com. (
                                        2023003 ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        IN      NS      testmail.com.
183     IN      PTR     testmail.com.
183     IN      PTR     mail.testmail.com.

3)检查配置文件是否有语法错误

[root@mail named]# named-checkzone testmail.com testmail.com.zone
zone testmail.com/IN: loaded serial 2023001
OK
[root@mail named]# named-checkzone testmail.com testmail.com.local
zone testmail.com/IN: loaded serial 2023003
OK

4)重启 bind 服务

[root@mail named]# systemctl restart named

5)将 mail 主机 DNS 解析指向 DNS 服务器

[root@node2 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
#search 253
# nameserver 219.148.204.66
nameserver 192.168.70.183
#nameserver 192.168.70.70

6)测试解析

①安装 dig 命令

[root@mail ~]# yum install -y bind-utils

②解析域名,结果如图 所示。

[root@node2 ~]# dig -t A mail.testmail.com

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.9 <<>> -t A mail.testmail.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 7491
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;mail.testmail.com.             IN      A

;; Query time: 1 msec
;; SERVER: 192.168.70.183#53(192.168.70.183)
;; WHEN: Wed Apr 19 00:47:29 CST 2023
;; MSG SIZE  rcvd: 46

3.2 安装配置 postfix

1)删除 postfix

①清除 postfix 软件包

[root@mail named]# rpm -e postfix

②删除 postfix 用户

[root@mail named]# userdel postfix
[root@mail named]# groupdel postfix
groupdel: group 'postfix' does not exist
[root@mail named]# groupdel postdrop

③新建用户

[root@mail named]# groupadd -g 2525 postfix
[root@mail named]# useradd -g 2525 -u 2525 -M -s /sbin/nologin postfix
[root@mail named]# groupadd -g 2526 postdrop
[root@mail named]# useradd -g 2526 -u 2526 -M -s /sbin/nologin postdrop

2)安装 postfix

[root@mail ~]# yum install -y postfix

3)配置 postfix,修改内容

[root@mail ~]# vi /etc/postfix/main.cf
#修改邮局主机名
myhostname = mail.testmail.com
#修改邮局域名
mydomain = testmail.com
#寄出邮件域名,删除注释
myorigin = $mydomain
#修改监听所有网卡,删除注释
inet_interfaces = all
#修改可接收邮件的主机名和域名,可被中继的域名
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
#修改可接收邮件的主机名和域名,可被中继的主机
#按实际情况填写
mynetworks = 172.16.51.0/24, 127.0.0.0/8
#取消注释
home_mailbox = Maildir/
#指定信任网段类型
mynetworks_style = host 
#指定允许中转邮件的域名,取消注释
relay_domains = $mydestination 

4)添加权限,设置开机启动并重启服务

[root@mail ~]# chown postfix.postfix -R /var/lib/postfix/
[root@mail ~]# chown postfix.postfix /var/spool/ -R
[root@mail ~]# systemctl enable postfix
[root@mail ~]# systemctl restart postfix

5)测试发送邮件

①创建测试邮件接收用户,并设置密码

[root@mail named]# useradd cwl
[root@mail named]# echo "111111" | passwd --stdin cwl
Changing password for user cwl.
passwd: all authentication tokens updated successfully.

②安装 Telnet 服务

[root@mail ~]# yum -y install telnet

③Telnet 连接邮件服务器 25 端口,发送邮件。

[root@mail ~]# telnet mail.testmail.com 25
Trying 172.16.51.20...
Connected to mail.testmail.com.
Escape character is '^]'.
220 mail.testmail.com ESMTP Postfix
mail from:root@testmail.com //发件人
250 2.1.0 Ok
rcpt to:cwl //收件人
250 2.1.5 Ok
data //填写邮件
354 End data with <CR><LF>.<CR><LF>
hello,this is test mail. //输入邮件内容
. //以“.”结束输入
250 2.0.0 Ok: queued as DC5693000085
quit //退出
221 2.0.0 Bye
Connection closed by foreign host

6)查看发送状态

[root@mail ~]# tail /var/log/maillog|grep sent
Oct 6 07:20:12 localhost postfix/local[2755]: DC5693000085: to=<cwl@testmail.com>, 
orig_to=<cwl>, relay=local, delay=31, delays=31/0.01/0/0.02, dsn=2.0.0, status=sent (delivered to 
maildir)

3.3 安装配置 dovecot

1)安装 dovecot

[root@mail ~]# yum install -y dovecot

2)修改 dovecot 相关配置文件

[root@mail named]# grep -v "^#" /etc/dovecot/dovecot.conf
protocols = imap pop3 lmtp
#如果不使用 IPv6,请修改为*
listen = *
login_trusted_networks =192.168.0.0/16
[root@mail ~]# vim /etc/dovecot/conf.d/10-auth.conf
#9 行: 取消注释并修改
#是否允许在沒有 SSL/TLS 下以明码登录
disable_plaintext_auth = no
#97 行: 添加
auth_mechanisms = plain login
[root@mail ~]# vim /etc/dovecot/conf.d/10-mail.conf
#30 行: 取消注释并添加
mail_location = maildir:~/Maildir
[root@mail ~]# vim /etc/dovecot/conf.d/10-master.conf
#88-90 行: 取消注释并添加 Postfix smtp 验证
unix_listener /var/spool/postfix/private/auth {
 mode = 0666
 user = postfix
 group = postfix
}

3)重启 dovecot 服务

[root@mail yum.repos.d]# systemctl restart dovecot

4)测试接收邮件

[root@mail ~]# telnet mail.testmail.com 110
Trying 172.16.51.20...
Connected to mail.testmail.com.
Escape character is '^]'.
+OK Dovecot ready.
user cwl //登录用户
+OK
pass 111111 //密码
+OK Logged in.
List //邮件列表
+OK 1 messages:
1 404
.
retr 1 //输入邮件编号查看邮件
+OK 404 octets
Return-Path: <root@testmail.com>
X-Original-To: cwl
Delivered-To: cwl@testmail.com
54
Received: from unknown (unknown [172.16.51.20])
 by mail.testmail.com (Postfix) with SMTP id DC5693000085
 for <cwl>; Sun, 6 Oct 2019 07:19:41 +0000 (UTC)
Message-Id: <20191006071952.DC5693000085@mail.testmail.com>
Date: Sun, 6 Oct 2019 07:19:41 +0000 (UTC)
From: root@testmail.com
hello,this is test mail.
.quit //退出
+OK Logging out
Connection closed by foreign host.

至此,邮件服务器收发功能搭建完成

4. foxmail验证

输入前面录入的账号密码,服务器IP
在这里插入图片描述
下面是我们刚刚使用postfix发送的邮件,可以新增用户,进行互发邮件
在这里插入图片描述

为了写本文,笔者先去学习了DNS服务器搭建的整体流程,以及配置文件的修改规则等等,这篇文章只能说是点到为止,像域外互访加密传输等等功能都没有包含,有兴趣的朋友可以参考其他作者的文章。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值