Linux学习 邮件

本文详细介绍了在Linux环境中如何配置邮件系统,包括DNS解析、邮件服务器postfix的安装与配置、邮件别名、邮件群发、客户端访问控制、地址伪装、收件协议dovecot的设置以及邮件系统与数据库的结合。此外,还讲解了空壳邮件服务主机的配置,用于转发邮件至实际邮件服务器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

邮件

一、先做DNS解析

(1)第一台主机

1.hostnamectl  set-hostname westos.mail.com

 systemctl  stop  firewalld

  配置ip为172.25.254.109

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

 systemctl  start  named  ##开启解析服务

2.vim /etc/named.conf

  注释掉11、12、17行

  32行:dnssec-validation  no;

  :wq



 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; };

};

 


3.cd /var/named

 cp  -p  named.localhost  westos.com.zone

 vim  westos.com.zone

 

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

vim qq.com.zone

 

4.systemctl restart  named

5.vim /etc/resolv.conf

  编辑内容:nameserver  172.25.254.109


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

                               dig  -t mx  qq.com



(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


二、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 root@qq.com    ##发送邮件给域名为qq.com的主机

 Subject:    ##输入主机

              ##写内容

 .           ##发送

 postsuper   -d   ##删除邮件队列

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

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

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


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


三、用户别名

1.vim /etc/aliases

在最后编辑内容如下:

       别名:    用户

如:    admin:    root

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

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

 mail  别名@qq.com

  在接受端使用命令mail查看

四、邮件群发

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

1.vim /etc/aliases

在最后编辑内容如下:

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

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

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

       用户名   

       student

       root

  :wq

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

4.测试

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

mail moreuser@qq.com

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

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

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

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

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

<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:root@westos.com     ##root用户从westos.com域发送邮件

 2502.1.0 Ok               

 rcptto :root@qq.com          ##发送邮件至qq.com域的root

 2502.1.5 Ok                 

 data                 ##开始输入邮件内容

 354End data with <CR><LF>.<CR><LF>

 文件内容

 .                     ##发送邮件

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

 quit                 ##结束远程访问

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


<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

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:root@westos.com     ##root用户从westos.com域发送邮件

250 2.1.0 Ok                

rcpt to :root@qq.com          ##发送邮件至qq.com域的root

554 5.7.1 <unknown[172.25.254.9]>:Client host rejected: Access denied

##172.25.254.90用户被拒绝  

  

 <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

如:student@westos.comREJECT

  :wq

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

4.systemctl restart  postfix

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:student@westos.com

250 2.1.0 Ok

rcpt to:root@qq.com

554 5.7.1 <student@westos.com>:Sender address rejected: Access denied  ##student用户拒绝发送


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

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

  postconf  -d  | grep  sender    ##

<4>限制用户接收

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

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

如下图示意:



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

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

 westos@westos.com   REJECT

  :wq

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

4.systemctl restart  postfix

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:root@westos.com   ##通过westos.com主机的root用户发送

250 2.1.0 Ok

rcpt to:westos@westos.com   ##westos.com主机的westos用户接收

554 5.7.1 <westos@westos.com>:Recipient address rejected: Access denied   ##westos用户拒绝接收

<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  out@site.com

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

       :wq

3.postmap /etc/postfix.generic

4.systemctl restart  postfix

5,测试

在westos.com主机端:

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

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

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

Subject: out    ##主题

site            ##内容

.               ##发送邮件

EOT

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

Mail queue is empty

在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"

    4root@westos.com       Sun May 2108:56  14/493  

    5westos@westos.com     Sun May 2110:36  12/318  

>N 6 out@site.com          Sun May 2110:45  21/690   "out"

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

Message 6:

From out@site.com  Sun May 21 10:45:00 2017

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

X-Original-To: root@qq.com     

Delivered-To: root@qq.com

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

To: root@qq.com

Subject: out

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

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

From: out@site.com

Status: R

Site

&

(2)入站地址转换

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

[root@qq-mail home]# mail out@site.com    ##给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  root@qq.com

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

                                         out@site.com

 

-- 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域名的解析地址相同,实现入站地址转换


3.systemctl  restart named

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

(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

编辑:out@site.com    westos@westos.com

  :wq

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

4.systemctl restart  postfix

5.测试

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

查看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

    1root@qq.com           Sun May 2110:10  15/504  

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

& 2        ##查看第2封邮件

Message 2:

From root@qq.com  Sun May 21 12:00:11 2017

Return-Path: <root@qq.com>

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

Delivered-To: westos@westos.com    ##实际发送至westos.com主机的westos用户

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

To: out@site.com

Subject: second

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

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

From: root@qq.com (root)

Status: R

complete

&

六、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

<2>、MDA代理端配置

1.yum install  dovecto  -y

 systemctl  start  dovecot

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

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

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,因为不安全,可能会看到其他用户的邮件

<3>客户端

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

 yum  install  mutt -y      ##安装服务

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

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

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

也可以使用imap协议搜索

如:mutt  -f pop://westos@172.25.254.109

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

                               

##输入y,回车

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

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

##accept  alwqys:认证并记录

本次实验输入o,回车

提示输入密码

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

读取成功,按q退出


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

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

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

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

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


七、客户端收发邮件

1.客户端安装雷鸟软件

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

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

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


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


选择skip

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

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

选择“冒险”

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

输入密码读邮箱中的邮件

读取邮件


发送邮件,点击Send


点击Email,即可登录新邮箱

                               

八、邮件与数据库的结合: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

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

  mysql_secure_installation    ##进行初始化


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(可任意命名)


  cd myadmin  

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

  vim config.inc.php

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

  :wq

原内容如下:

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

4.systemctl  restart httpd

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

访问数据库

新建数据库email

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



插入数据:username--bai@bai.com 

  password--bai  

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

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

<2>交互式管理数据库

1.myspl  -uroot -pwestos

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


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

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

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

<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  "bai@bai.com"  mysql:/etc/postfix/mailuser.cf

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

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  "bai@bai.com"  mysql:/etc/postfix/mailbox.cf

<四>

  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"

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


2.email.emailuser表格如下示:

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

3.systemctl  restart postfix    ##重启服务

<五>测试

 mail  bai@bai.com           ##给bai.com域的bai 用户发邮件--数据库信息

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


(二)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



5.systemctl  restart  dovecot   ##重启服务


<三>测试

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 bai@bai.com      ##输入用户名
+OK
pass bai              ##密码

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


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

  登录bai@bai.com用户

九、空壳邮件服务

<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 bai@bai.com           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 root@westos.com  Sun May 28 10:41:10 2017         
Return-Path: <root@westos.com>
X-Original-To: root@westos.com
Delivered-To: root@westos.com
Date: Sun, 28 May 2017 10:41:10 -0400
To: root@westos.com
Subject: I
User-Agent: Heirloom mailx 12.5 7/5/10
Content-Type: text/plain; charset=us-ascii
From: root@westos.com (root)
Status: R

am null
&


可以看出:空壳邮件服务主机并不进行真正的收发邮件,其只是将邮件文件进行转发。

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

mail  root@example.com

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


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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值