Linux学习 邮件

邮件

一、先做DNS解析

(1)第一台主机

1.hostnamectl  set-hostname westos.mail.com

 systemctl  stop  firewalld

  配置ip为172.25.254.109

 yum  install  bind -y    ##下载解析服务器

 systemctl  start  named  ##开启解析服务

Linux学习 邮件_第1张图片

2.vim /etc/named.conf

  注释掉11、12、17行

  32行:dnssec-validation  no;

  :wq

Linux学习 邮件_第2张图片

Linux学习 邮件_第3张图片

 vim  /etc/named.rfc1912.zones

zone"westos.com" IN {

        type master;

        file "westos.com.zone";     ##域名westos.com的解析文件为westos.com.zone

        allow-update { none; };

};

zone"qq.com" IN {

        type master;

        file "qq.com.zone";       ##域名qq.com的解析文件为qq.com.zone

        allow-update { none; };

};

 Linux学习 邮件_第4张图片


3.cd /var/named

 cp  -p  named.localhost  westos.com.zone

 vim  westos.com.zone

 Linux学习 邮件_第5张图片

cp -p  westos.com.zone  qq.com.zone

vim qq.com.zone

Linux学习 邮件_第6张图片

 

4.systemctl restart  named

5.vim /etc/resolv.conf

  编辑内容:nameserver  172.25.254.109

Linux学习 邮件_第7张图片

Linux学习 邮件_第8张图片

6.可以使用dig命令进行检测:dig  -t mx  westos.com

                               dig  -t mx  qq.com

Linux学习 邮件_第9张图片

Linux学习 邮件_第10张图片

(2)另外一台主机

1.systemctl stop  firewalld

  配置IP为172.25.254.209

 systemctl  start  network

 hostnamectl  set-hostname  qq.mail.com

2.vim  /etc/resolv.conf

  编辑:nameserver  172.25.254.109

Linux学习 邮件_第11张图片

Linux学习 邮件_第12张图片

二、postfix

(1)postfix提供smtp协议用来投递邮件,其默认端口为25

  netstat  -antlpe  | grep  master   ##查看25端口


(2)修改配置文件

第一台主机--westos.mail.com

1.vim /etc/postfix/main.cf

       76myhostname = westos-mail.westos.com    ##Postfix服务邮件主机的主机名

       83mydomain = westos.com     ##域名为westos.com,Postifx会自动删除名称第一部分,将剩余部分作为域名

       99myorigin = $mydomain             ##发送的邮件结尾是westos.com

       116inet_interfaces = all          ##开放端口

       164mydestination = $myhostname, $mydomain, localhost,westos.com  ##以这些内容结尾的邮件该主机接收

2.systemctl restart  postfix    ##重启服务

第二台主机--qq.mail.com

1.vim /etc/postfix/main.cf

       76myhostname = qq-mail.qq.com    ##主机名

       83mydomain = qq.com    ##域名为qq.com

       99myorigin = $mydomain             ##发送的邮件结尾是qq.com

       116inet_interfaces = all          ##开放所有的网络接口

       164mydestination = $myhostname, $mydomain, localhost,qq.com  ##以这些内容结尾的邮件该主机接收

2.systemctl restart  postfix    ##重启服务

(3)测试

第一台主机端--westos.mail.com

1.mail [email protected]    ##发送邮件给域名为qq.com的主机

 Subject:    ##输入主机

              ##写内容

 .           ##发送

 postsuper   -d   ##删除邮件队列

2.mailq     ##查看邮件队列,查看是否成功发送

 postqueue  -f     ##重新处理邮件队列

 postsuper  -d  队列ID     ##删除队列中和指定邮件

Linux学习 邮件_第13张图片

接受端使用命令mail查看是收到邮件

Linux学习 邮件_第14张图片

三、用户别名

1.vim /etc/aliases

在最后编辑内容如下:

       别名:    用户

如:    admin:    root

2.postalias /etc/aliases     ##使文件生效

3.测试:在另一台主机可使用命令如下

 mail  别名@qq.com

Linux学习 邮件_第15张图片

  在接受端使用命令mail查看

Linux学习 邮件_第16张图片

四、邮件群发

在qq.com主机端做如下1、2、3操作

1.vim /etc/aliases

在最后编辑内容如下:

       别名:      :include:filename   ##文件中的用户均使用这一别名

如: moreuser:     :include:/etc/postfix/fmorefile     ##以绝对路径来指定路径

Linux学习 邮件_第17张图片

2.vim /etc/postfix/morefile        ##编辑群发的用户

       用户名   

       student

       root

  :wq

3.postalias  /etc/aliases     ##使文件生效

4.测试

在westos.com主机端使用如下命令测试:

mail [email protected]

Linux学习 邮件_第18张图片

在qq.com主机端使用如下命令查看:

mail   ##查看root用户是否收到邮件

mail -u  用户名      ##查看该用户是否收到邮件

mail -u  student    ##查看student用户是否收到邮件

Linux学习 邮件_第19张图片

五、邮件客户端的访问控制

<1>在未限制客户端的访问控制前,其客户端访问效果如下:

1.yum install  telnet  -y

2.telnet 172.25.254.109 25    ##远程访问

 Trying172.25.254.109...

 Connectedto 172.25.254.109.

 Escapecharacter is '^]'.

 220westos.mail.com ESMTP Postfix   ##登录信息

 mailfrom:[email protected]     ##root用户从westos.com域发送邮件

 2502.1.0 Ok               

 rcptto :[email protected]          ##发送邮件至qq.com域的root

 2502.1.5 Ok                 

 data                 ##开始输入邮件内容

 354End data with .

 文件内容

 .                     ##发送邮件

 2502.0.0 Ok: queued as 74B8AEAC27   ##发送成功

 quit                 ##结束远程访问

在域名为qq.com的主机使用mail命令查看是否接收到邮件

Linux学习 邮件_第20张图片

Linux学习 邮件_第21张图片

<2>限制客户端

(1)在客户端(主机ip--172.25.254.90)

yum install telnet  -y

(2)在mta上,使用以下命令,即可限制客户端(举例选择在westos.com主机进行实验)

1.postconf -d  |  grep client     ##查看访问限制命令

 postconf  -e "smtpd_client_restrictions = check_client_access  hash:/etc/postfix/access"

  ###限制hash加密的/etc/postfix/access文件中的客户端访问

2.vim /etc/postfix/access    ###编辑限制客户端名单

格式:    IP REJECT

如:172.25.254.90  REJECT ###限制172.25.254.90这台主机访问,注意编辑时不能多加空格


3.postmap /etc/postfix/access   ##对文件加密生成加密文件access.db,为mta提供限制名单

4.systemctl restart  postfix    ##重启postfix

Linux学习 邮件_第22张图片

5.配置正确时,会在/etc/postfix/main.cf文件自动生成命令,显示如下:

(3)客户端测试:

telnet 172.25.254.109 25    ##远程访问westos.com主机

Trying 172.25.254.109...

Connected to 172.25.254.109.

Escape character is '^]'.

220 westos.mail.com ESMTP Postfix   ##登录信息

mail from:[email protected]     ##root用户从westos.com域发送邮件

250 2.1.0 Ok                

rcpt to :[email protected]          ##发送邮件至qq.com域的root

554 5.7.1 :Client host rejected: Access denied

##172.25.254.90用户被拒绝  

Linux学习 邮件_第23张图片  

 <3>限制用户发送

1.postconf -d  |  grep sender    ##查看限制方式

  postconf -e  "smtpd_sender_restrictions =check_sender_access  hash:/etc/postfix/sender"

  ###发送邮件时检测/etc/postfix/sender经hash加密生成的文件中的内容

2.vim /etc/postfix/sender

编辑格式:

       用户名@域名  REJECT

如:[email protected]

  :wq

3.postmap /etc/postfix/sender   ##对文件加密,postfix协议读加密文件/etc/postfix/sender.db

4.systemctl restart  postfix

Linux学习 邮件_第24张图片

5.vim /etc/postfix/main.cf

6.客户端测试

[root@foundation9 ~]# telnet 172.25.254.10925

Trying 172.25.254.109...

Connected to 172.25.254.109.

Escape character is '^]'.

220 westos.mail.com ESMTP Postfix

mail from:[email protected]

250 2.1.0 Ok

rcpt to:[email protected]

554 5.7.1 :Sender address rejected: Access denied  ##student用户拒绝发送

Linux学习 邮件_第25张图片

注:以上命令中使用以下命令来查看邮件执行的操作程序??

  postconf  -d  | grep  client    ##客户端程序??

  postconf  -d  | grep  sender    ##

<4>限制用户接收

在域名主机端新建用户westos:useradd  westos

未限制用户接收前,其可以接收文件

如下图示意:

Linux学习 邮件_第26张图片

Linux学习 邮件_第27张图片

如下操作进行限制用户接收:

1.postconf -d  |  grep recipient

 postconf  -e  "smtpd_recipient_restrictions =check_recipient_access hash:/etc/postfix/名称"

##接收邮件时检测经hash加密生成的/etc/postfix/recip.db文件

如:postconf  -e "smtpd_recipient_restrictions = check_recipient_accesshash:/etc/postfix/recip"

2.vim /etc/postfix/recip

 [email protected]   REJECT

  :wq

3.postmap /etc/postfix/recip   ##使文件内容生效

4.systemctl restart  postfix

Linux学习 邮件_第28张图片

5.测试

在客户端:

[kiosk@foundation90 Desktop]$ telnet172.25.254.109 25

Trying 172.25.254.109...

Connected to 172.25.254.109.

Escape character is '^]'.

220 westos.mail.com ESMTP Postfix

mail from:[email protected]   ##通过westos.com主机的root用户发送

250 2.1.0 Ok

rcpt to:[email protected]   ##westos.com主机的westos用户接收

554 5.7.1 :Recipient address rejected: Access denied   ##westos用户拒绝接收

Linux学习 邮件_第29张图片

<5>地址伪装:邮件的发送用户名不是真实的用户名

(1)出站地址伪装:发送邮件时将发送端用户名转换成别名即以伪装身份发送邮件。

1.postconf -d  |  grep generic

 postconf  -e  "smtp_generic_maps = hash:/etc/postfix/名称"

如:postconf  -e "smtp_generic_maps = hash:/etc/postfix/generic"

2.vim /etc/postfix/generic

用户名@域名       别名@另一域名

如:westos.westos.com  [email protected]

##westos用户在上述过程<4>中已经建立,将出站身份伪装成out,域名伪装成site.com,但解析时该域名应与westos.com为同一解析域

       :wq

3.postmap /etc/postfix.generic

4.systemctl restart  postfix

Linux学习 邮件_第30张图片

5,测试

在westos.com主机端:

[root@westos postfix]# su - westos  #切换至westos用户

Last login: Sun May 21 10:06:28 EDT 2017 onpts/1

[westos@westos ~]$ mail [email protected] ##给qq.com主机的root用户发送邮件

Subject: out    ##主题

site            ##内容

.               ##发送邮件

EOT

[westos@westos ~]$ mailq  ##查看邮件队列,即是否发送成功

Mail queue is empty

Linux学习 邮件_第31张图片

在qq.com端:

[root@qq-mail home]# mail ##查看接收的邮件

Heirloom Mail version 12.5 7/5/10.  Type ? for help.

"/var/spool/mail/root": 6messages 1 new 2 unread

    1root                  Sun May 21 08:02  22/723  "hello"

    2root                  Sun May 2108:07  22/731   "hello"

 U  3root                  Sun May 2108:48  25/855   "that's"

    [email protected]       Sun May 2108:56  14/493  

    [email protected]     Sun May 2110:36  12/318  

>N 6 [email protected]          Sun May 2110:45  21/690   "out"

& 6          ##输入6,读取第六封邮件

Message 6:

From [email protected]  Sun May 21 10:45:00 2017

Return-Path:     ##显示:邮件来自于site.com主机的out用户

X-Original-To: [email protected]     

Delivered-To: [email protected]

Date: Sun, 21 May 2017 10:45:00 -0400

To: [email protected]

Subject: out

User-Agent: Heirloom mailx 12.5 7/5/10

Content-Type: text/plain; charset=us-ascii

From: [email protected]

Status: R

Site

&

Linux学习 邮件_第32张图片

(2)入站地址转换

未作地址转换前,由qq.com主机给site.com主机的out用户回邮件,过程及结果显示如下:

[root@qq-mail home]# mail [email protected]    ##给site.com主机的out用户发送邮件

Subject: return       

xxx  

.                   ##发送邮件

EOT

[root@qq-mail home]# mailq    ##查看邮件队列,是否发送成功,结果显示失败

-Queue ID- --Size-- ----Arrival Time-----Sender/Recipient-------

DB14B246242      410 Sun May 21 11:04:33  [email protected]

(Host or domain name not found. Nameservice error for name=site.com type=MX: Host not found, try again)       ##未找到域名site.com的解析地址,因此无法发送邮件给site.com主机

                                         [email protected]

 

-- 0 Kbytes in 1 Request.

因此地址伪装除了编辑出站地址的别名外,还要对伪装后的域名做地址解析及邮件别名设置

(A)域名site.com解析

1.vim /etc/named.rfc1912

编辑内容如下:

       zone"site.com" IN {    ##域名解析实现

              type master; 

              file "site.com.zone";   

               ##解析文件是site.com.zone

              allow-update { none; };

       };

  :wq

2.cd /var/named

 cp  -p  westos.com.zone  site.com.zone

 vim  site.com.zone

编辑后内容显示如下:

  $TTL1D

@      IN SOA  dns.site.comroot.site.com. (

                                        0       ; serial

                                        1D      ; refresh

                                        1H      ; retry

                                        1W      ; expire

                                        3H)    ; minimum

                NS      dns.site.com.

dns             A       172.25.254.109

site.com.         MX1    172.25.254.109.   

##site.com域名的解析地址需与westos.com域名的解析地址相同,实现入站地址转换

Linux学习 邮件_第33张图片

3.systemctl  restart named

Linux学习 邮件_第34张图片

可以使用命令查看dig -tmx site.com是否解析成功

Linux学习 邮件_第35张图片

(B)westos.com主机上进行邮件别名设置(out---westos)

1.postconf -d  |  grep alias

 postconf -e "virtual_alias_maps = hash:/etc/postfix/名称"

如:postconf -e"virtual_alias_maps = hash:/etc/postfix/virtual"

2.vim /etc/postfix/virtual

编辑:[email protected]    [email protected]

  :wq

3.postmap /etc/postfix/virtual   ##使文件生效

4.systemctl restart  postfix

5.测试

从qq.com主机给site.com的out用户发送文件,实际发送给westos.com主机的westos用户

Linux学习 邮件_第36张图片

查看westos.com主机的westos用户是否收到来自qq.com主机的邮件,内容如下:

[root@westos ~]# mail -u westos        ##查看westos用户接收的邮件

Heirloom Mail version 12.5 7/5/10.  Type ? for help.

"/var/mail/westos": 2 messages 1new

    [email protected]           Sun May 2110:10  15/504  

>N 2 root                  Sun May 2112:00  21/705   "second"

& 2        ##查看第2封邮件

Message 2:

From [email protected]  Sun May 21 12:00:11 2017

Return-Path:

X-Original-To: [email protected]        ##源接收地址为site.com主机的out用户

Delivered-To: [email protected]    ##实际发送至westos.com主机的westos用户

Date: Sun, 21 May 2017 12:00:11 -0400

To: [email protected]

Subject: second

User-Agent: Heirloom mailx 12.5 7/5/10

Content-Type: text/plain; charset=us-ascii

From: [email protected] (root)

Status: R

complete

&

Linux学习 邮件_第37张图片

六、dovecot--提供收件协议

<1>、接收端认证

1.接收端认证即用户认证与密码认证,使用MDA代理

2.dovecot服务为MDA代理提供如下协议,作用:用户通过认证后,引导用户读取该用户的邮件

       提供的协议        端口号

       pop3              110

       pop3s             995

       imap              143

       imaps             993

注:(1)netstat  -antlpe |  grep  服务名   ##查看某服务的端口号

  (2)cat  /etc/services  | grep  服务名 ##查看某服务的端口号

     cat  /etc/services  | grep  bind

  (3)/etc/skel     ##系统骨架目录

     /etc/shells

Linux学习 邮件_第38张图片

<2>、MDA代理端配置

1.yum install  dovecto  -y

 systemctl  start  dovecot

 netstat  -antlpe  | grep  dovecot    ##查看dovecto的端口号

Linux学习 邮件_第39张图片

2.编辑主配置文件:指定所使用的协议

 vim /etc/dovecot/dovecto.conf    

使24、48、49行生效,其内容显示如下:

       24protocols = imap pop3 lmtp   ##dovecot使用的协议,其中lmtp是加密协议

       48login_trusted_networks = 0.0.0.0/0   ##允许所有网络

      49 disable_plaintext_auth = no  ##允许明文认证

3.编辑子配置文件:指定哪些用户可以访问,并在通过验证后引导用户去该用户的邮箱查看该用户的邮件

 vim /etc/dovecot/conf.d/10-mail.conf 

其中部分内容如下:

       17#   %u - username    ##%u表示主机名

      18 # %n - user part in user@domain, same as %u if there's no domain               ##%n表示用户名

      19 #  %d - domain part in user@domain, empty if there's no domain            ##%d表示域名

      20 #  %h - home directory ##%h表示家目录

      ###解释说明%u、%n、%d、%h各代表什么

       24#   mail_location = maildir:~/Maildir  

    25 #  mail_location = mbox:~/mail:INBOX=/var/mail/%u

    26 #  mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n

          ##指定邮箱位置

需要编辑的内容如下:

 30mail_location = mbox:~/mail:INBOX=/var/mail/%u

  ##邮件存放在用户家目录中的/mail/.imap/INBOX,用户家目录即/home/用户名;INBOX=/var/mail/%u,因为可能有多个用户,所以不直接指定具体地址

       :wq

Linux学习 邮件_第40张图片

4.systemctl restart  dovecot

5.新建用户,并设置用户密码--在某域的主机

如:useradd  westos   ##在westos.com的主机上建立

echo   密码  | grep   用户名      ##给用户设置密码

6.建立该用户的邮件存放位置--/home/用户名/mail/.imap/INBOX文件

 su -  westos

 mkidr /home/westos/mail/.imap

 touch /home/westos/mai/.imap/INBOX

##其中,INBOX=/var/mail/%u.不能直接指定为/var/mail/westos,因为不安全,可能会看到其他用户的邮件

Linux学习 邮件_第41张图片

<3>客户端

1.rpm -qa  |  grep mutt     ##是否安装mutt服务

 yum  install  mutt -y      ##安装服务

Linux学习 邮件_第42张图片

2.mutt -f  pop://用户名@IP  

##使用pop协议去搜索IP中的指定用户的邮箱

其中IP为用户所在的主机IP,即某解析域所在的主机IP;

也可以使用imap协议搜索

如:mutt  -f pop://[email protected]

##使用pop协议去搜索westos.com域所在的主机中该用户的邮箱

                               Linux学习 邮件_第43张图片

##输入y,回车

Linux学习 邮件_第44张图片

##reject,accept:输入r表示拒绝认证

##once:输入o表示认证并不记录

##accept  alwqys:认证并记录

本次实验输入o,回车

Linux学习 邮件_第45张图片

提示输入密码

Linux学习 邮件_第46张图片

已进入邮箱,选中某个邮件,回车即可读取内容

Linux学习 邮件_第47张图片

读取成功,按q退出


<4>域名所在主机中用户的邮箱地址的创建,可以自动完成,命令如下:

在域名主机的root用户下操作

1.mkdir /etc/skel/mail/.imap  -p    ##/etc/skel 系统的骨架目录

2.touch /etc/skel/mail/.imap/INBOX

3.useradd  用户名 -p  密码     ##创建用户后,即可自动完成用户的邮箱文件的创建

Linux学习 邮件_第48张图片

Linux学习 邮件_第49张图片

七、客户端收发邮件

1.客户端安装雷鸟软件

  rpm -ivh thunderbird-31.2.0-1.el7.x86_64.rpm

  ###需要从网页下载与系统版本匹配的安装包,再进行安装

2.打开雷鸟软件,可以使用命令:thunderbird

Linux学习 邮件_第50张图片

3.具体实现过程见如下:

Linux学习 邮件_第51张图片

选择skip

Linux学习 邮件_第52张图片

编辑用户名及邮件地址,此用户必须有INBOX,continue

Linux学习 邮件_第53张图片

修改信息,更改后内容如图示:选择pop3协--110端口;用户名为westos;再Re-test

Linux学习 邮件_第54张图片

选择“冒险”

Linux学习 邮件_第55张图片

客户端即可登录邮箱,对邮箱第一次操作时需输入密码

Linux学习 邮件_第56张图片

输入密码读邮箱中的邮件

Linux学习 邮件_第57张图片

读取邮件

Linux学习 邮件_第58张图片

发送邮件,点击Send

Linux学习 邮件_第59张图片

点击Email,即可登录新邮箱

                               Linux学习 邮件_第60张图片

八、邮件与数据库的结合:Postfix+mariadb+dovecot

(一)postfix+mariadb   ---邮件的发送

<一>、数据库的创建

<1>数据库的网页管理工具

1.yum  intstall php  php-mysal  httpd mariadb-server  -y 

 systemctl start httpd

 systemctl stop  firewalld

 systemctl start  mariadb

2.vim  /etc/my.cnf

编辑内容: skip-networking=1    ##关闭网络接口

  :wq

Linux学习 邮件_第61张图片

  systemctl restart  mariadb  ##重启数据库服务

  mysql_secure_installation    ##进行初始化

Linux学习 邮件_第62张图片

Linux学习 邮件_第63张图片

3.从网页下载与主机匹配的phpMyAdmin安装包

  如本机下载:phpMyAdmin-3.4.0-all-languages.tar.bz2

  cd /var/www/html     ##网页下载至该目录中

  tar jxf phpMyAdmin-3.4.0-all-languages.tar.bz2  ##解压

  mv phpMyAdmin-3.4.0-all-languages/ myadmin  

  ##重新命名为myadmin(可任意命名)

Linux学习 邮件_第64张图片

  cd myadmin  

  cp config.sample.inc.php config.inc.php    ##生成配置文件

  vim config.inc.php

编辑第17行,其''中不能为空

  :wq

原内容如下:

根据提示信息:必须在’’中填写信息,如下示:

4.systemctl  restart httpd

Linux学习 邮件_第65张图片

5.网页访问172.25.254.100/myadmin进行数据库管理

Linux学习 邮件_第66张图片

访问数据库

Linux学习 邮件_第67张图片

新建数据库email

Linux学习 邮件_第68张图片

在email数据库中新建emailuser数据表,字段为4,具体实现见下图

Linux学习 邮件_第69张图片

Linux学习 邮件_第70张图片

Linux学习 邮件_第71张图片

插入数据:[email protected] 

  password--bai  

domain--bai.com  ##该域名一定与Postfix主机真实的域不同

maildir--/mnt/bai.com/bai/  ##用户邮件存放家目录

<2>交互式管理数据库

1.myspl  -uroot -pwestos

2.具体实现过程如图示意:

Linux学习 邮件_第72张图片

<二>、用户创建及授权--登录数据库的用户

1.mysal -uroot  -pwestos

2.create user  用户名@localhost  identified by  '密码';

##建立用户并给定密码,此用户只能通过本机登录

如:MariaDB[(none)]> create  user  postuser@localhost identified  by 'postuser';

###新建用户postuser并设置密码为postuser,该用户只能通过本机登录

3.用户授权

MariaDB [(none)]> grant  select, update, insert  on email.*  to  postuser;

###postuser对email库中的所有数据有select(读取)、update(更新)、insert(写数据)的功能,即可以在邮箱中可以读邮件、更改邮箱密码、注册

注:用户不能删除邮箱帐号,所以不能给用户授权delete

Linux学习 邮件_第73张图片

Linux学习 邮件_第74张图片

<三>、邮件与数据库的结合

<1>vim  /etc/postfix/mailuser.cf

编辑       76 myhostname =westos-mail.qq.com    ##主机名

       83 mydomain = westos.com     ##域名为qq.com

       99 myorigin = $mydomain              ##发送的邮件结尾是qq.com

       116 inet_interfaces = all          ##开放所有的网络接口

       164 mydestination = $myhostname,$mydomain, localhost,  ##以这些内容结尾的邮件该主机接收

<2>.编辑postfix与数据库的连接文件

1.vim  /etc/postfix/mailuser.cf  ##编辑postfix与数据库的连接文件

       hosts = localhost   ##数据库所在主机

       user = postuser     ##登录数据库的用户

       password = postuser   ##登录数据库的密码

       dbname = email      ##postfix要查询的库名称

       table = emailuser   ##postfix要查询的表名称

       select_field = username   ##postfix要查询的字段

       where field = username    ##用户给定postfix的查询条件

   :wq

##

  postmap -q  "[email protected]"  mysql:/etc/postfix/mailuser.cf

Linux学习 邮件_第75张图片

2.vim  /etc/postfix/maildomain.cf   ##用户域名查询

       hosts = localhost   ##数据库所在主机

       user = postuser     ##登录数据库的用户

       password = postuser   ##登录数据库的密码

       dbname = email      ##postfix要查询的库名称

       table = emailuser   ##postfix要查询的表名称

       select_field = domain   ##postfix要查询的字段

       where field = domain    ##用户给定postfix的查询条件

    :wq

  postmap -q  "bai.com"  mysql:/etc/postfix/maildomain.cf

Linux学习 邮件_第76张图片

3.vim  /etc/postfix/mailbox.cf   ##用户域名查询

       hosts = localhost   ##数据库所在主机

       user = postuser     ##登录数据库的用户

       password = postuser   ##登录数据库的密码

       dbname = email      ##postfix要查询的库名称

       table = emailuser   ##postfix要查询的表名称

       select_field = maildir   ##postfix要查询的字段

       where field = username    ##用户给定postfix的查询条件

    :wq

  postmap -q  "[email protected]"  mysql:/etc/postfix/mailbox.cf

Linux学习 邮件_第77张图片

<四>

  groupadd -g 666 vmail                          ##创建目录,虚拟用户访问目录
 useradd -s /sbin/nologin -u 666 vmail -g 666           ##创建虚拟用户


<五>potfix配置--邮件的发送

1.postconf  -d |  grep  virtual

  postconf -e  "virtual_mailbox_base =/home/vmail/"

  ##设定虚拟用户的邮件目录

  postconf -e "virtual_uid_maps =static:666"

  ##虚拟用户建立文件的uid

  postconf -e "virtual_gid_maps =static:666"

  ##虚拟用户建立文件的gid

  postconf -e "virtual_alias_maps =mysql:/etc/postfix/mailuser.cf"

  postconf -e "virtual_mailbox_domains =mysql:/etc/postfix/maildomain.cf"

  postconf -e "virtual_mailbox_mps =mysql:/etc/postfix/mailbox.cf"

Linux学习 邮件_第78张图片

若配置成功,可在/etc/postfix/main.cf最后进行查看是否生成有效命令

Linux学习 邮件_第79张图片

2.email.emailuser表格如下示:

注意:maildir字段的信息是:/bai.com/bai

Linux学习 邮件_第80张图片

3.systemctl  restart postfix    ##重启服务

<五>测试

 mail  [email protected]           ##给bai.com域的bai 用户发邮件--数据库信息

若发送成功,则/home/vmail会自动产生数据库信息

Linux学习 邮件_第81张图片

(二)dovecot+mariadb--邮件接收
<一>安装dovecot,并进行配置
1.yum  install  dovecot  -y

  yum  install  dovecto-mysql  -y     ##安装dovecto与数据库连接的插件

<二>配置dovecot

1.vim  /etc/dovecot/dovecto.conf

编辑内容如下:
  24  protocols = imap pop3 lmtp       ##支持收件协议
  48  login_trusted_networks =0.0.0.0/0  ##允许通过的网络
  49  disable_plaintext_auth=no        ##开启明文认证
  :wq
2.vim  /etc/dovecot/conf.d/10-auth.conf

  123 !include auth-sql.conf.ext       ##使123行生效,表示开启mysql认证方式


3.cp  -p  cp -p /usr/share/doc/dovecot-2.2.10/example-config/dovecot-sql.conf.ext  /etc/dovecot/dovecot-sql.conf.ext           ##生成dovecot读取数据库的配置文件
  vim  /etc/dovecot/dovecot-sql.conf.ext  
编辑内容如下:
  32  driver = mysql                    ##数据库类型
  71  connect = host=localhost dbname=email user=postuser password=postuser   
  ##查询时用到的库、用户及密码
  78  default_pass_scheme = PLAIN       ##明文认证
  107  password_query = \
  108  SELECT username, domain, password \
  109  FROM emailuser WHERE username = '%u' AND domain = '%d'
 125  user_query = SELECT maildir, 666 AS uid, 666 AS gid FROM emailuser WHERE username = '%u'
   ##从emailuser表中查询邮件内容
   ##username='%u'   库中的字段信息username
   ##

  :wq



4.vim  /etc/dovecot/conf.d/10-mail.conf
编辑内容如下:
   30 mail_location = maildir:/home/vmail/%d/%n    
   ##指定邮件位置,其中: %d=domain;%n=username
   168 first_valid_uid = 666   ##邮件查询用户身份
   175 first_valid_gid = 666

  :wq


Linux学习 邮件_第82张图片

5.systemctl  restart  dovecot   ##重启服务

Linux学习 邮件_第83张图片

<三>测试

1.yum  install  telnet  -y     ##在服务端下载测试软件
2.测试
[root@westos ~]# telnet 172.25.254.109 110
Trying 172.25.254.109...
Connected to 172.25.254.109.
Escape character is '^]'.
+OK [XCLIENT] Dovecot ready.
user [email protected]      ##输入用户名
+OK
pass bai              ##密码

+OK Logged in.        ##显示内容表示通过认证

Linux学习 邮件_第84张图片

Linux学习 邮件_第85张图片

<三>客户端
1.安装雷鸟服务
2.thunder

  登录[email protected]用户

Linux学习 邮件_第86张图片

九、空壳邮件服务

<1>空壳邮件服务主机不接收邮件,其作用是将邮件转发给邮件服务器,或是真正的域名解析地址所在的主机。

<2>配置空壳邮件服务主机--172.25.254.209

1.hostnamectl  set -hostname  nullmail.example.com

 

2.vim  /etc/postfix/main.cf

编辑内容如下:

 76    myhostname = nullmail.example.com                 ##主机名

 83    mydomain = example.com                                      ##域名

 99    myorigin = westos.com                                           ##接收的域名是westos.com的邮件

 116   inet_interfaces = all

164    mydestination =                                                    ##该主机不再作为解析域

316     relayhost = 172.25.254.109 

:wq

<3>测试

1.在空壳邮件服务主机发邮件

  mail    root                        ##表示给westos.com的root用户发邮件,因为myorigin=westos.com

2.在westos.com域名的解析主机查看root用户邮件,内容如下示:

 [root@westos-mail ~]# mail    
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/spool/mail/root": 4 messages 1 new 3 unread
 U  1 Mail Delivery System  Sun May 28 09:11  72/2244  "Undelivered Mail Returned to Sende"
 U  2 [email protected]           Sun May 28 09:58  26/868   "Re: you"
    3 root                  Sun May 28 10:23  22/747   "I"
>N  4 root                  Sun May 28 10:41  21/742   "I"
& 4
Message  4:
From [email protected]  Sun May 28 10:41:10 2017         
Return-Path:
X-Original-To: [email protected]
Delivered-To: [email protected]
Date: Sun, 28 May 2017 10:41:10 -0400
To: [email protected]
Subject: I
User-Agent: Heirloom mailx 12.5 7/5/10
Content-Type: text/plain; charset=us-ascii
From: [email protected] (root)
Status: R

am null
&


可以看出:空壳邮件服务主机并不进行真正的收发邮件,其只是将邮件文件进行转发。
Linux学习 邮件_第87张图片

Linux学习 邮件_第88张图片

3.在空壳邮件服务主机端,给example.com域的主机发送邮件,查看其接收者是否是example.com主机

mail  [email protected]

4.在空壳邮件服务主机端查看,内容显示无邮件

Linux学习 邮件_第89张图片

在westos.com域的主机查看是否有来自example.com的邮件


你可能感兴趣的:(Linux学习<三>)