邮件

一、先做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的邮件

Linux学习 邮件相关推荐

  1. linux 发邮件给用户,Linux学习之给指定用户发邮件

    发送邮件 进入 mail 程序后的操作都很简单,但是可以不进入 mail 的 & 操作提示符界面,下面举几个实用例子: 1.给 snailwarrior@qq.com 发信 [root@pps ...

  2. 我的Linux成长路---001 Linux学习初期计划

    Linux学习初期计划 1.Linux基础 Linux历史.Linux版本.Linux安装.shell命令 2.Linux系统管理 用户管理.文件权限管理.磁盘管理.进程管理.自动化任务.安装程序.. ...

  3. Linux学习(CentOS-7)---磁盘分区(概念、分区方法、分区方案)

    2016-09-23 16:28 13512人阅读 评论(0) 收藏 举报 分类: Linux学习(6) 版权声明:本文为博主原创文章,未经博主允许不得转载. 1磁盘分区相关的概念 1.1什么是磁盘 ...

  4. Linux学习之CentOS(三十四)--配置域主DNS服务器

    在上一篇随笔里 Linux学习之CentOS(三十三)--DNS基础及域名系统架构,讲解了DNS的一些基础知识以及域名系统架构,在本篇随笔里将详细地讲解主DNS服务器的配置... 一.DNS服务器的类 ...

  5. Linux端日志加密,Linux学习--第十三天--日志、系统运行级别、grub加密

    日志 rsyslogd取代了syslogd. /var/log/cron #定时任务相关日志 /var/log/cups #打印信息相关日志 /var/log/dmesg #开机内核自检相关日志,dm ...

  6. 「干货」什么Linux是邮件服务器?

    每天我们都会收到很多的邮件,但是从来没有了解过邮件是怎么实现收发的,也没有自己配置过一台邮件服务器. 今天我们就来认识一下什么是邮件服务器. 常见的邮件服务器软件介绍 Sendmail:sendmai ...

  7. Linux学习笔记13

    Linux学习笔记13 Linux学习笔记13 配置Nagios 基本介绍 Nagios安装 - 服务端 Nagios安装 - 客户端 监控中心添加被监控主机 配置文件的简单说明 继续添加需要服务端通 ...

  8. linux学习查看日志命令

    linux学习查看日志命令 tail -f linux学习日 志 文 件 说 明 /var/log/maillog 与邮件相关的日志信息 /var/log/secure 与安全相关的日志信息 /var ...

  9. Linux学习总结(68)——Linux 30年专访:Linus Torvalds谈Linux内核开发与Git

    三十年前,当Linus Torvalds(林纳斯·托瓦兹,下文统称Linus)首次发布Linux内核时,他还是赫尔辛基大学(University of Helsinki)的一名21岁的学生,他宣布说: ...

最新文章

  1. 暴风前员工替冯鑫惋惜,是公司的老白兔员工害了他
  2. [ARM异常]-armv8/armv9同步异常的介绍
  3. bmw info source
  4. GitHub + jsDelivr + PicGo 搭建个人图床
  5. Android用GSon处理Json数据
  6. 【渝粤教育】广东开放大学 国际金融 形成性考核 (48)
  7. Opencv透视变换——cv::getPerspectiveTransform()与cv::warpPerspective()详解
  8. UVA 12101 Prime Path (素数筛+BFS)
  9. ios多线程之NSThread头文件详解
  10. SAP License:SAP凭证编号中跳号问题处理
  11. Tensorflow——Dropout(解决过拟合问题)
  12. c语言中学生信息管理系统中删除学生信息,学生信息管理系统C语言编程
  13. JAVA中关于除数为0
  14. 运行 Clojure 编程实战 5.3 节代码出现 Could not locate Clojure resource on classpath 问题
  15. 计算机安全模式快捷键,windows7怎么进入安全模式(快捷键进入的方法)
  16. net中winform教程 浏览器控件,还是微软的WebView2最好用
  17. MySQL燕十八老师课程笔记:第十六课:MySQL各个函数
  18. Python安装libsvm
  19. 4k纸是几厘米乘几厘米_4k纸多大,纸张的大小规格
  20. linux kworker进程占用cpu,为什么kworker cpu使用率如此之高?

热门文章

  1. python的一些语句的意思
  2. 自定义拍照时 拍照界面_摄影技巧,拍照时模特的眼睛应看向哪里?不同的眼神方向有何区别...
  3. 消除数据库表中的重复组
  4. 练习之彩票四 计算中奖数(结尾)
  5. Apache NIFI InvokeHTTP
  6. 怎样改证件照的背景颜色?两种方法教你换背景色
  7. 【手把手教你】使用Python构建股票财务指标打分系统
  8. 大数据信息资料采集:网易云音乐QQ音乐歌曲基本信息及评论采集爬虫
  9. css html5 中文,盘点5个典型的CSS3文字特效
  10. 安霸linux开发板,安霸 ubuntu开发环境搭建