电子邮件发送
服务器使用SMTP协议将电子邮件提交至TCP端口25,或由本地客户端通过
/usr/bin/sendmail程序进行提交。如果该MTA是最终目标位置,邮件将传递至MDA。否
则,将使用MX记录在DNS中查找下一个MTA,并使用SMTP进行转发。
MDA:“邮件发送代理”。MDA将邮件发送至收件人的本地邮件存储位置(默认情
况下是/var/spool/mail/user)。Postfix提供自己的MDA,以发送至基于文件的本地默认
邮件存储位置/usr/libexec/postfix/local.
转发:电子邮件服务器(MTA)将提交的邮件转发至另一个服务器,以进行发送
排队:失败的发送或转发尝试排队等待,并由MTA定义重试。(默认情况下,Postfix每小时执行此操作一次)
拒绝:在首次提交期间,电子邮件被电子邮件服务器拒绝
退回:远程服务器接受电子邮件以进行发送以后,又将该电子邮件退回给始发电子邮件服务器和/或用户电子邮件以进行发送以后,又将该电子邮件退回给始发电子邮件服务器和/或用户
1.两台主机(虚拟机也可)
我用的是两台虚拟机
2.两台主机的ip在一个网段内
我的两个虚拟机的ip分别是:
172.25.254.190
172.25.254.191
3.修改主机名
[root@mailwestos ~]# hostnamectl set-hostname mailwestos.westos.com
[root@maillinux ~]# hostnamectl set-hostname maillinux.linux.com
4.在mailwestos.westos.com上先搭建DNS服务器
1>安装bind
[root@mailwestos ~]# yum install bind -y
2>修改配置文件
11 listen-on port 53 { any; };
17 allow-query { any; };
33 dnssec-validation no; ##不进行dnssec安全认证
3>#vim /etc/named.rfc1912.conf
修改内容如下:
zone "westos.com." IN {
type master;
file "westos.com.zone";
allow-update { none; };
};
zone "linux.com." IN {
type master;
file "linux.com.zone";
allow-update { none; };
};
4>#vim /var/named/westos.com.zone
$TTL 1D
@ IN SOA dns.westos.com. root.westos.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.westos.com.
dns A 172.25.254.190
westos.com. MX 1 172.25.254.190.
#cp -p westos.com.zone linux.com.zone
#vim linux.com.zone
$TTL 1D
@ IN SOA dns.linux.com. root.westos.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.westos.com.
dns A 172.25.254.190
linux.com. MX 1 172.25.254.191.
5>[root@mailwestos named]# systemctl restart named
测试:
[root@mailwestos named]# dig -t mx westos.com.
; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> -t mx westos.com.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41193
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;westos.com. IN MX
;; ANSWER SECTION:
westos.com. 86400 IN MX 1 172.25.254.190.
;; AUTHORITY SECTION:
westos.com. 86400 IN NS dns.westos.com.
;; ADDITIONAL SECTION:
dns.westos.com. 86400 IN A 172.25.254.190
;; Query time: 0 msec
;; SERVER: 172.25.254.190#53(172.25.254.190)
;; WHEN: Fri Mar 10 20:43:40 EST 2017
;; MSG SIZE rcvd: 103
此时,DNS服务器就搭建好了
二、搭建postfix邮件服务器
1.搭建之前我们来先做个小实验:
先用mailwestos.ewestos.com 给maillinux.linux.com发邮件
[root@mailwestos named]# mail [email protected]
Subject: lsj
slkdjfls
.
EOT
[root@mailwestos named]# mailq
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
50C9A17E860 445 Fri Mar 10 21:25:27 [email protected]
(connect to 172.25.254.229[172.25.254.229]:25: No route to host)
[email protected]
-- 0 Kbytes in 1 Request.
用maillinux.linux.com 给mailwestos.westos.com发邮件
[root@maillinux ~]# mail [email protected]
Subject: test
ljkdsf
.
EOT
You have mail in /var/spool/mail/root
[root@maillinux ~]# mailq
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
E666426D01A 443 Fri Mar 10 21:26:28 [email protected]
(Host or domain name not found. Name service error for name=westos.com type=MX: Host not found, try again)
[email protected]
-- 0 Kbytes in 1 Request.
可以发现,两台主机谁也发不了邮件;
现在我们来实现两台主机可以互发邮件:
在两台主机上都进行以下操作:
1>修改postfix的配置文件
[root@maillinux ~]# vim /etc/postfix/main.cf3>防火墙
[root@maillinux ~]# firewall-cmd --permanent --add-service=smpt
[root@maillinux ~]# firewall-cmd --reload
[root@maillinux ~]# firewall-cmd --list-all
另一台主机也需要修改做以上操作,若是以上做完不能发,配置postfix服务主机上的/etc/resolv.conf,给他设置为上面的DNS服务器的ip
排错:
>/var/log/maillog
操作
cat /var/log/maillog
以上操作我们用到了一个协议:SMTP 简单传输控制协议
而postfix正是实现 了SMTP的一种服务
2.Postfix邮件服务器介绍
postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件。postfix是Wietse Venema想要为使用最广泛的sendmail提供替代品的一个尝试。
Postfix由postfix RPM包提供,并通过postfix服务脚本控制。它是一个由多个协同操作程序构成的模块化程序,它的组件由master进程控制。
Postfix的主配置文件是/etc/postfix/main.cf,可以使用文本编辑器或postconf命令进行编辑。postconf命令还可用于确定Postfix的所有当前和默认配置设置或逐项确定这些设置。
默认情况下,Postfix仅侦听来自本地主机的传入电子邮件。若要重新配置postfix以接收从远程主机发送的本地邮件,必须在/etc/postfix/main.cf中设置inet_interfaces = all
对电子邮件进行故障排除时,将在/var/log/maillog中保留所有与邮件相关的操作日志,其中包括关于被事件和成功事件的信息。mailq命令(或postqueue -p)显示已排队的所有传出邮件的列表。若要尝试再次立即发送所有已排队的邮件,可以运行postfix flush命令(或postqueue -f);否则,postfix将大约每小时尝试重新发送一次,直至邮件被接受或过期。
3.空壳邮件客户端
实际上,大多数组织不再只用一个邮件服务器来处理所有入站和出战电子邮件。相反,出于安全方面的考虑邮件服务器专门针对特定角色进行了设置,以便可以面向其具体针对的应用程序更好标准角色包括:
null客户端:运行本地MTA的客户端计算机,使所有电子邮件都可以转发至中央邮件服务器以进行发送,null客户端不接受任何电子邮件的本地发送。
仅入站邮件服务器:在站点处理用户的所有传入电子邮件,并将之传递给MDA以发送至用户邮件存储位置的邮件服务器。
在实际情况中,通常会在仅入站邮件服务器前端安装反垃圾邮件服务器或设备,以过滤垃圾邮件并且仅将 正常邮件转发至入站邮件服务器。
出站邮件转发:出站邮件转发(或“smarthost”)接收所有出站邮件,并使用MX记录和SMTP协议将邮件转发至目标位置 。
4.Postfix邮件别名的配置
1>[root@maillinux named]# vim /etc/aliases ##设置邮件别名,也可设置群组
admin: root ##前为假名,后为真名
2>[root@maillinux named]# postalias /etc/aliases ##文件加密
3>[root@maillinux named]# systemctl restart postfix.service ##重启Postfix服务
测试:在westoslinux.westos.com上给maillinux.linux.com 用别名发邮件
[root@mailwestos ~]# mail [email protected]
Subject: slkdj
jjjj
.
EOT
[root@mailwestos ~]# mailq
Mail queue is empty
看下westos
>N 2 root Fri Mar 10 22:20 21/748 "slkdj"
成功发送
邮件群发:
1>[root@maillinux named]# vim /etc/aliases
more: :include:/etc/postfix/users
2>[root@maillinux named]# vim /etc/postfix/users
root
student
3>[root@maillinux named]# postalias /etc/aliases #文件加密
4>[root@maillinux named]# systemctl restart postfix.service
测试:在mailwestos.westos.com给maillinux.linux.com发邮件
[root@mailwestos ~]# mail [email protected]
Subject: more
hhhh
.
EOT
[root@mailwestos ~]# mailq
Mail queue is empty
看linux
[root@maillinux named]# mail -u student
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/mail/student": 1 message 1 new
>N 1 root Fri Mar 10 22:20 24/877 "more"
[root@maillinux named]# mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/root": 3 messages 1 new
1 root Fri Mar 10 21:38 22/791 "test"
2 root Fri Mar 10 22:20 22/759 "slkdj"
>N 3 root Fri Mar 10 22:20 24/874 "more"
5.Postfix虚拟域的配置
1>[root@maillinux named]# vim /etc/postfix/virtual
[email protected] [email protected]
2>[root@maillinux named]# postmap /etc/postfix/virtual ##生成Postfix可读取的数据库文件
执行完,/etc/postfix/下会有一个virtual.db
3>[root@maillinux named]# postconf -d | grep virtual
postconf命令:
-d: 显示默认的配置
-n:显示修改过的配置
-m:显示支持查找表的类型
-A: 客户端支持的SASL插件类型
-a: 服务器端支持的SASL插件类型
-e PARA=VALUE: 更改某参数配置信息,并保存至main.cf文件中
4.[root@maillinux named]# postconf -e "virtual_alias_maps = hash:/etc/postfix/virtual"
virtual_alias_domains:用来指定虚拟别名域的名称
virtual_alias_maps用来指定含有虚拟别名域定义的文件路径
5.在本机测试:
[root@maillinux named]# mail [email protected]
Subject: hhhhhhhhhh
lsd
.
EOT
[root@maillinux named]# mailq
Mail queue is empty
[root@maillinux named]# mail
X-Original-To: [email protected]
Delivered-To: [email protected]
如果是另一台主机给本台主机发,则:
1.配置DNS,增加域qq.com
[root@mailwestos ~]# vim /etc/named.rfc1912.zones
zone "qq.com" IN {
type master;
file "qq.com.zone";
allow-update { none; };
};
2.重启named服务
[root@mailwestos ~]# systemctl restart named
3.测试:用mialwestos.westos.com给maillinux.linux.com发邮件
[root@mailwestos named]# mail [email protected]
Subject: ouioiiuouiou
lkkl
.
EOT
[root@mailwestos named]# mailq
Mail queue is empty
到maillinux.linux.com上看邮件
[root@maillinux ~]# mail
U 12 root Tue Mar 14 19:58 22/751 "ouioiiuouiou"
现在如果回信:[root@maillinux named]# mail [email protected]
Subject: hui
sldf
.
EOT
[root@maillinux named]# mailq
westos那边:Return-Path:
显然是不对的,因为mailwestos.westos.com给[email protected]发的,收到的回信却是[email protected],所以我们要进行下面的操作。
出站地址伪装:
1.[root@maillinux named]# vim /etc/postfix/generic
2.[root@maillinux named]# postmap /etc/postfix/generic
加密过后我们可以看到/etc/postfix下多了一个generic.db
3.[root@maillinux named]# postconf -d | grep generic
4.[root@maillinux named]# postconf -e "smtp_generic_maps = hash:/etc/postfix/generic"
5.[root@maillinux named]# systemctl restart postfix.service
测试:
现在我们在用maillinux.linux.com给mailwestos.westos.com回信
[root@maillinux ~]# mail [email protected]
Subject: toiuo
kkl
.
EOT
[root@maillinux ~]# mailq
Mail queue is empty
mailwestos.westos.com上显示来信人是:
Return-Path:
三、在远程主机上发邮件
我用的远程主机的ip是172.25.254.90
1.在远程主机上安装telnet
[root@foundation90 ~]# yum install telnet
telnet介绍:
Telnet是teletype network的缩写,现在已成为一个专有名词,表示远程登录协议和方式,分为Telnet客户端和Telnet服务器程序. Telnet可以让用户在本地Telnet客户端上远端登录到远程Telnet服务器上。
Telnet是位于OSI模型的第7层---应用层上的一种协议,是一个通过创建虚拟终端提供连接到远程主机终端仿真的TCP/IP协议。这一协议需要通过用户名和口令进行认证,是Internet远程登陆服务的标准协议。应用Telnet协议能够把本地用户所使用的计算机变成远程主机系统的一个终端。它提供了三种基本服务:
1)Telnet定义一个网络虚拟终端为远程系统提供一个标准接口。客户机程序不必详细了解远程系统,他们只需构造使用标准接口的程序;
2)Telnet包括一个允许客户机和服务器协商选项的机制,而且它还提供一组标准选项;
3)Telnet对称处理连接的两端,即Telnet不强迫客户机从键盘输入,也不强迫客户机在屏幕上显示输出。
2.在远程主机上登录并发送邮件
[root@foundation90 ~]# telnet 172.25.254.191 25
Trying 172.25.254.191...
Connected to 172.25.254.191.
Escape character is '^]'.
220 maillinux.linux.com ESMTP Postfix
ehlo hello ##这是向服务器表明你的用户身份:服务器会返回代码 250表示服务器认可你的身份
250-maillinux.linux.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
mail from:[email protected] ##填写发件人的邮箱,即你自己的邮箱名
250 2.1.0 Ok
rcpt to:[email protected] ##填写收件人的邮箱
250 2.1.5 Ok
data ##远程主机发送的、用于启动邮件内容传输的命令。
354 End data with
lkjlkjlj
.
250 2.0.0 Ok: queued as 1B6BE17D3AB
quit ##退出
221 2.0.0 Bye
Connection closed by foreign host.
四、在远程主机上接收邮件
Dovecot介绍:
POP3协议允许电子邮件客户端下载服务器上的邮件,但是在客户端的操作(如移动邮件、标记已读等),不会反馈到服务器上,比如通过客户端收取了邮箱中的3封邮件并移动到其他文件夹,邮箱服务器上的这些邮件是没有同时被移动的 。
而IMAP提供webmail 与电子邮件客户端之间的双向通信,客户端的操作都会反馈到服务器上,对邮件进行的操作,服务器上的邮件也会做相应的动作。
同时,IMAP像POP3那样提供了方便的邮件下载服务,让用户能进行离线阅读。IMAP提供的摘要浏览功能可以让你在阅读完所有的邮件到达时间、主题、发件人、大小等信息后才作出是否下载的决定。此外,IMAP 更好地支持了从多个不同设备中随时访问新邮件。
POP3 更易丢失邮件或多次下载相同的邮件,但 IMAP 通过邮件客户端与webmail 之间的双向同步功能很好地避免了这些问题。465端口(SMTPS):SMTPS和SMTP协议一样,也是用来发送邮件的,只是更安全些,防止邮件被黑客截取泄露,还可实现邮件发送者抗抵赖功能。防止发送者发送之后删除已发邮件,拒不承认发送过这样一份邮件。
995端口(POP3S):POP3S和POP3协议一样,也是用来接收邮件的,只是更安全些
993端口(IMAPS):IMAPS和IMAP协议一样,也是用来接收邮件的,只是更安全些
1-5在邮件服务器上做,6-8在远程客户机上做
1.在邮件服务器上安装服务Dovecot:
[root@maillinux named]# yum install dovecot -y
2.开启Dovecot服务:
[root@maillinux named]# systemctl start dovecot
3.编写主配置文件c
[root@maillinux named]# vim /etc/dovecot/dovecot.conf
48 login_trusted_networks = 0.0.0.0/0 ##允许任何ip来登录
49 disable_plaintext_auth = no ##允许明文密码验证
4.编写子配置文件
[root@maillinux named]# vim /etc/dovecot/conf.d/10-mail.conf
30 mail_location = mbox:~/mail:INBOX=/var/mail/%u
10-mail.conf:该文件主要定义邮件用户存储相关信息的位置,用户收到的文件放到哪里
5.重启服务
[root@mailwestos conf.d]# systemctl restart dovecot.service
下面在客户机操作:
6.安装mutt
[root@foundation90 ~]# yum install mutt -y
mutt介绍:它是一款基于文字界面的邮件客户端,非常小巧,但功能强大,可以用它来读写,回复保存和删除你的邮件,能在linux命令行模式下收发邮件附件。
7.[root@foundation90 ~]# mutt -f pop://[email protected]
登录时登录不了,则做以下操作:
[root@maillinux mail]# su - student
[student@maillinux ~]$ ls
mail
[student@maillinux ~]$ cd mail/
[student@maillinux mail]$ ls
[student@maillinux mail]$ mkdir /home/student/mail/.imap
[student@maillinux mail]$ touch /home/student/mail/.imap/INBOX
/etc/skel/:这下面有什么东西,新用户被建立出来时就会有什么东西
8.安装使用邮件客户端 雷鸟thunderbird
>有安装包thunderbird-31.2.0-1.el7.x86_64.rpm
>[root@foundation90 ~]# yum install thunderbird-31.2.0-1.el7.x86_64.rpm
>[root@foundation90 ~]# thunderbird
>注册一个帐号,这个帐号必须是邮件服务器上真实存在的用户或是数据库中有的虚拟用户
>在邮件服务器上真实存在的账户的密码就是他在邮件服务器上的密码,而虚拟用户的密码则是自己给定存储到数据库
接下来我们就来看怎么建立邮件的虚拟用户
五、虚拟用户发邮件的服务配置
1.在邮件服务器上安装数据库:
[root@maillinux myadmin]# yum install mariadb-server.x86_64 httpd php php-mysql.x86_64 -y
2.修改配置文件
[root@maillinux ~]# vim /etc/my.cnf#编写配置文件3.开启数据库
[root@maillinux ~]# systemctl restart mariadb#开启数据库
4.[root@maillinux ~]# mysql_secure_installation #进行安全设置
5.安装图形化数据库工具
[root@maillinux ~]# mv phpMyAdmin-3.4.0-all-languages.tar.bz2 /var/www/html/
[root@maillinux html]# tar jxf phpMyAdmin-3.4.0-all-languages.tar.bz2 #解压
5.[root@maillinux html]# rm -fr phpMyAdmin-3.4.0-all-languages.tar.bz2
[root@maillinux html]# mv phpMyAdmin-3.4.0-all-languages/ myadmin #修改文件夹的名字是为了方便
[root@maillinux html]# cd myadmin/
[root@maillinux myadmin]# cp -p config.sample.inc.php config.inc.php #创建配置文件
[root@maillinux myadmin]# vim config.inc.php #修改配置文件
6.开启httpd服务
[root@maillinux myadmin]# systemctl restart httpd
7.在浏览器登录,创建email库,mailusers表,表中有四列
8.创建用户并授权
我们肯定不能让客户用root用户登录,所以要给创建一个只能对email库进行操作的用户
[root@maillinux myadmin]# mail -uroot -p
MariaDB [(none)]> CREATE USER postfix@localhost IDENTIFIED BY 'postfix';
MariaDB [(none)]> GRANT INSERT,SELECT ON email.* TO postfix@localhost;
[root@maillinux myadmin]# mysql -upostfix -p
MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| email |
+--------------------+
9.在网页上对数据库操作,给mailuser表添加一行
10.在/etc/postfix/新建三个文件,即下面黄色高亮显示部分
[root@maillinux postfix]# vim mysql-user.cf
[root@maillinux postfix]# cp mysql-user.cf mysql-domain.cf
[root@maillinux postfix]# cp mysql-user.cf mysql-mailbox.cf
[root@maillinux postfix]# cat mysql-user.cf
hosts = localhost
user = postfix
password = postfix
dbname = email
table = mailuser
select_field = username
where_field = username
[root@maillinux postfix]# cat mysql-domain.cf
hosts = localhost
user = postfix
password = postfix
dbname = email
table = mailuser
select_field = domain
where_field = domain
[root@maillinux postfix]# cat mysql-mailbox.cf
hosts = localhost
user = postfix
password = postfix
dbname = email
table = mailuser
select_field = maildir
where_field = username
11.测试上面三个文件写的是否正确,如果正确会输出下面的
[root@maillinux postfix]# postmap -q "[email protected]" mysql:/etc/postfix/mysql-user.cf
[email protected]
[root@maillinux postfix]# postmap -q "qq.com" mysql:/etc/postfix/mysql-domain.cf
qq.com
[root@maillinux postfix]# postmap -q "[email protected]" mysql:/etc/postfix/mysql-mailbox.cf
/qq.com/admin
12.用命令修改/etc/postfix/main.cf的默认配置
[root@maillinux postfix]# groupadd -g 888 vmail
[root@maillinux postfix]# useradd -u 888 -g 888 vmail
[root@maillinux postfix]# postconf -d | grep virtual
[root@maillinux postfix]# postconf -e "virtual_mailbox_base = /home/vmail" #设置虚拟用户存储的路径
[root@maillinux postfix]# postconf -e "virtual_uid_maps = static:888" #设置虚拟用户的身份
[root@maillinux postfix]# postconf -e "virtual_gid_maps = static:888" #设置虚拟用户的组
[root@maillinux postfix]# postconf -e "virtual_alias_maps = mysql:/etc/postfix/mysql-user.cf"
[root@maillinux postfix]# postconf -e "virtual_mailbox_domains = mysql:/etc/postfix/mysql-domain.cf"
[root@maillinux postfix]# postconf -e "virtual_mailbox_maps = mysql:/etc/postfix/mysql-mailbox.cf"
[root@maillinux postfix]# vim /etc/postfix/main.cf
virtual_mailbox_base = /home/vmail ##指出邮箱路径的前缀
virtual_uid_maps = static:888 ##指出保存虚拟用户邮箱的uid的表在哪里,这是针对每个虚拟用户邮箱在系统中的uid都不一样的情况。虚拟用户的邮箱也可以共用一个
virtual_gid_maps = static:888 ##这个与uid情况相同
virtual_alias_maps = mysql:/etc/postfix/mysql-user.cf ##用来指定含有虚拟别名域定义的文件路径,在数据库里
virtual_mailbox_domains = mysql:/etc/postfix/mysql-domain.cf ##虚拟网域的名称
virtual_mailbox_maps = mysql:/etc/postfix/mysql-mailbox.cf ##指定保存虚拟用户邮箱的路径表在哪里
[root@maillinux vmail]# mail [email protected] ##检测是否能给数据库里的用户发送邮件
Subject: towang
lskd
lskdj
.
EOT
若无法发送:则有可能是数据库中的maildir里的/qq.com/admin少一个/
[root@maillinux vmail]# postsuper -d DB7A826EB3A ##删除邮件队列里的某个邮件
六、虚拟用户收邮件的服务配置
1.编写配置文件
[root@maillinux vmail]# vim /etc/dovecot/dovecot.conf
login_trusted_networks = 0.0.0.0/0 ##允许任何ip地址的主机来访问
disable_plaintext_auth = no ##开启明文验证
2.重启服务
[root@maillinux vmail]# systemctl restart dovecot.service
3.
[root@maillinux vmail]# vim /etc/dovecot/conf.d/10-auth.conf
123 !include auth-sql.conf.ext
4.[root@maillinux vmail]# vim /etc/dovecot/conf.d/auth-sql.conf.ext
到这里看
passdb {
driver = sql
# Path for SQL configuration file, see example-config/dovecot-sql.conf.ext
args = /etc/dovecot/dovecot-sql.conf.ext
}
5.[root@maillinux vmail]# cp /usr/share/doc/dovecot-2.2.10/example-config/dovecot-sql.conf.ext /etc/dovecot/dovecot-sql.conf.ext
6.[root@maillinux vmail]# vim /etc/dovecot/dovecot-sql.conf.ext
32 driver = mysql
71 connect = host=localhost dbname=email user=postfix passwor d=postfix
78 default_pass_scheme = PLAIN
107 password_query = \
108 SELECT username, domain, password \
109 FROM mailuser WHERE username = '%u' AND domain = '%d'
125 user_query = SELECT maildir, 888 AS uid, 888 AS gid FROM mailu ser WHERE username = '%u‘
7.[root@maillinux vmail]# vim /etc/dovecot/conf.d/10-mail.conf
30 mail_location = maildir:/home/vmail/%d/%n
8.[root@maillinux vmail]# systemctl restart dovecot.service
9.在远程主机上登录数据库:
[root@foundation90 ~]# telnet 172.25.254.191 110
或用雷鸟:[root@foundation90 ~]# thunderbird
一个用户通过邮件客户端,例如雷鸟,收邮件的过程:
1.邮件客户端——>Dovecot:我要收邮件,你可以给我建立IMAP加密连接吗?
2.Dovecot——>邮件客户端:可以,这是我的SSL证书,请把你的帐号和密码给我
3.邮件客户端——>Dovecot:这是我的帐号密码
4.Dovecot——>MySQL:这个帐号、密码正确吗
5.MySQL——>Dovecot:这个帐号密码正确
6.Dovecot打开存放在本地磁盘的mailbox
7.Dovecot拿到该用户的最新邮件及相关信息
8.Dovecot将邮件及其相关信息通过IMAP协议发给邮件客户端
该用户要通过邮件客户端给别人回信:
1.邮件客户端 ——>Postfix:我要发邮件,可以给我建立一个安全的SMTP连接吗?
2.Postfix ——>邮件客户端:可以,这是我的SSL证书,请把你的帐号和密码给我
3.邮件客户端 ——> Postfix:这是我的帐号和密码
4.Postfix ——>Dovecot:请帮我查一下这个帐号和密码
5.Dovecot t——>MySQL:这个帐号、密码正确吗
6.MySQL ——>Dovecot:这个帐号密码正确
7.Dovecot ——>Postfix:这个帐号密码正确
8.Postfix ——>邮件客户端:帐号密码是正确的,允许发送邮件
9.邮件客户端将编写好的邮件通过SMTP协议发送给Postfix
10.Postfix将收到的邮件转发给对方
11.Postfix通过DNS查询对方邮箱的MX记录,并找到对方Postfix所在的服务器
12.邮件被送到对方邮件服务器上的Postfix
13.Postfix——>MySQL:对方邮箱地址里的域名是不是需要处理的域名
14.MySQL返回确认信息给Postfix
15.Postfix将邮件投递给Dovecot的LMTP服务做处理
16.Dovecot将邮件保存到邮件目录用户对应的磁盘路径下
发件完毕!