• Linux云自动化运维第十七课


    第四单元 配置电子邮件传输

    一、基本电子邮件发送

    1.电子邮件发送

    1)服务器使用SMTP协议将电子邮件提交至TCP端口25,或由本地客户端通过/usr/bin/sendmail程序进行提交。如果该MTA是最终目标位置,邮件将传递至MDA。否则,将使用MX记录在DNS中查找下一个MTA,并使用SMTP进行转发。

    2)MDA:“邮件发送代理”。MDA将邮件发送至收件人的本地邮件存储位置(默认情况下是/var/spool/mail/user)。Postfix提供自己的MDA,以发送至基于文件的本地默认邮件存储位置/usr/libexec/postfix/local.

    3)转发:电子邮件服务器(MTA)将提交的邮件转发至另一个服务器,以进行发送

    4)排队:失败的发送或转发尝试排队等待,并由MTA定义重试。(默认情况下,Postfix每小时执行此操作一次)

    5)拒绝:在首次提交期间,电子邮件被电子邮件服务器拒绝

    6)退回:远程服务器接受电子邮件以进行发送以后,又将该电子邮件退回给始发电子邮件服务器和/或用户

    7)电子邮件以进行发送以后,又将该电子邮件退回给始发电子邮件服务器和/或用户

    a.Postfix由postfix RPM包提供,并通过postfix服务脚本控制。它是一个由多个协同操作程序构成的模块化程序,它的组件由master进程控制。

    b.Postfix的主配置文件是/etc/postfix/main.cf,可以使用文本编辑器或postconf命令进行编辑。postconf命令还可用于确定Postfix的所有当前和默认配置设置或逐项确定这些设置。

    c.默认情况下,Postfix仅侦听来自本地主机的传入电子邮件。若要重新配置postfix以接收从远程主机发送的本地邮件,必须在/etc/postfix/main.cf中设置inet_interfaces = all

    d.对电子邮件进行故障排除时,将在/var/log/maillog中保留所有与邮件相关的操作日志,其中包括关于被事件和成功事件的信息。mailq命令(或postqueue -p)显示已排队的所有传出邮件的列表。若要尝试再次立即发送所有已排队的邮件,可以运行postfix flush命令(或postqueue -f);否则,postfix将大约每小时尝试重新发送一次,直至邮件被接受或过期。

    2.重要的Postfix配置指令:可以在/etc/postfix/main.cf文件中找到以下所有指令。

    1)myorigin

      重写本地发布的电子邮件,使其显示为来自该域。这样有助于确保响应返回入站邮件服务器

      默认:myorigin = $myhostname

    2)inet_interfaces

      控制Postfix侦听传入电子邮件的网络接口。如果设置为loopback-only,仅侦听127.0.0.1和::1,如果设置为all,则侦听所有网络接口。还可以指定特定地址。

      默认:inet_interfaces = localhost

    3)mydestination

      收到地址为这些域的电子邮件将传递至MDA,以进行本地发送。

      默认:mydestination = $myhostname, localhost.$mydomain, localhost

    4)mynetworks

      IP地址和网络的逗号分隔列表(采用CIDR表示法)。这些地址和网络可以通过此MTA转发至任何位置,无需进一步身份验证。

      默认:mynetworks = 127.0.0.0/8

    5)relayhost

      relayhost转发所有通过的出站邮件。通常用方括号指定,以阻止MX记录查找。

      默认:relayhost =

    6)local_transport

      收件地址为$mydestination的邮件的发送方式。默认情况下,设置为local:$myhostname(使用Local MDA将传入电子邮件发送到/var/spool/mail中的本地邮件存储位置)

      默认:local_transport = local:$myhostname

    7)postconf -d 显示默认值。

    8)postconf -n显示不同于默认值的更改。

    二、空壳邮件客户端

      实际上,大多数组织不再只用一个邮件服务器来处理所有入站和出战电子邮件。相反,出于安全方面的考虑邮件服务器专门针对特定角色进行了设置,以便可以面向其具体针

    对的应用程序更好标准角色包括:

    1.null客户端:运行本地MTA的客户端计算机,使所有电子邮件都可以转发至中央邮件服务器以进行发送,null客户端不接受任何电子邮件的本地发送。

    2.仅入站邮件服务器:在站点处理用户的所有传入电子邮件,并将之传递给MDA以发送至用户邮件存储位置的邮件服务器。在实际情况中,通常会在仅入站邮件服务器前端安装反垃圾邮件服务器或设备,以过滤垃圾邮件并且仅将 正常邮件转发至入站邮件服务器。

    3.出站邮件转发:出站邮件转发(或“smarthost”)接收所有出站邮件,并使用MX记录和SMTP协议将邮件转发至目标位置 。

    三、示例

    1.配置基本环境

    #mail-qq端

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

    [root@mail-qq ~]# vim /etc/named.conf    #允许所有主机连接

    #//      listen-on port 53 { 127.0.0.1; };

    #//      listen-on-v6 port 53 { ::1; };

    #        directory       "/var/named";

    #        dump-file       "/var/named/data/cache_dump.db";

    #        statistics-file "/var/named/data/named_stats.txt";

    #        memstatistics-file "/var/named/data/named_mem_stats.txt";

    #//      allow-query     { localhost; };

    #        dnssec-enable yes;

    #        dnssec-validation no;

    #        dnssec-lookaside auto;

    [root@mail-qq ~]# vim /etc/named.rfc1912.zones    #正向解析

    #zone "qq.com" IN {

    #        type master;

    #        file "qq.com.zone";

    #        allow-update { none; };

    #};

    #zone "westos.com" IN {

    #        type master;

    #        file "westos.com.zone";

    #        allow-update { none; };

    #};

    [root@mail-qq named]# cd /var/named/

    [root@mail-qq named]# ls

    data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves

    [root@mail-qq named]# cp -p named.localhost qq.com.zone

    [root@mail-qq named]# vim qq.com.zone

    [root@mail-qq named]# cat qq.com.zone

    $TTL 1D

    @ IN SOA dns.qq.com. root.qq.com. (

    0 ; serial

    1D ; refresh

    1H ; retry

    1W ; expire

    3H ) ; minimum

    NS dns.qq.com.

    dns A 172.25.254.142

    qq.com. MX 1 172.25.254.142.

    [root@mail-qq named]# cp -p qq.com.zone westos.com.zone

    [root@mail-qq named]# vim westos.com.zone

    [root@mail-qq named]# cat 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.142

    westos.com. MX 1 172.25.254.242.

    [root@mail-qq named]# systemctl start named

    [root@mail-qq named]# systemctl stop firewalld.service

    [root@mail-qq named]# systemctl disable firewalld.service

    rm '/etc/systemd/system/basic.target.wants/firewalld.service'

    rm '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service'

    [root@mail-qq named]# vim /etc/resolv.conf

    [root@mail-qq named]# cat /etc/resolv.conf

    # Generated by NetworkManager

    search qq.com

    nameserver 172.25.254.142

    [root@mail-qq named]# dig -t mx qq.com

    ; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> -t mx qq.com

    ;; global options: +cmd

    ;; Got answer:

    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8303

    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

    ;; OPT PSEUDOSECTION:

    ; EDNS: version: 0, flags:; udp: 4096

    ;; QUESTION SECTION:

    ;qq.com. IN MX

    ;; ANSWER SECTION:

    qq.com. 86400 IN MX 1 172.25.254.142.

    ;; AUTHORITY SECTION:

    qq.com. 86400 IN NS dns.qq.com.

    ;; ADDITIONAL SECTION:

    dns.qq.com. 86400 IN A 172.25.254.142

    ;; Query time: 0 msec

    ;; SERVER: 172.25.254.142#53(172.25.254.142)

    ;; WHEN: Thu Apr 20 21:59:10 EDT 2017

    ;; MSG SIZE  rcvd: 99

    [root@mail-qq 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: 57470

    ;; 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.242.

    ;; AUTHORITY SECTION:

    westos.com. 86400 IN NS dns.westos.com.

    ;; ADDITIONAL SECTION:

    dns.westos.com. 86400 IN A 172.25.254.142

    ;; Query time: 0 msec

    ;; SERVER: 172.25.254.142#53(172.25.254.142)

    ;; WHEN: Thu Apr 20 21:59:16 EDT 2017

    ;; MSG SIZE  rcvd: 103

    #mail-westos端

    [root@mail-westos ~]# systemctl stop firewalld.service

    [root@mail-westos ~]# systemctl disable firewalld.service

    rm '/etc/systemd/system/basic.target.wants/firewalld.service'

    rm '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service'

    [root@mail-westos ~]# vim /etc/resolv.conf

    [root@mail-westos ~]# cat /etc/resolv.conf

    # Generated by NetworkManager

    search westos.com

    nameserver 172.25.254.142

    [root@mail-westos ~]# dig -t mx qq.com

    ; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> -t mx qq.com

    ;; global options: +cmd

    ;; Got answer:

    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46511

    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

    ;; OPT PSEUDOSECTION:

    ; EDNS: version: 0, flags:; udp: 4096

    ;; QUESTION SECTION:

    ;qq.com. IN MX

    ;; ANSWER SECTION:

    qq.com. 86400 IN MX 1 172.25.254.142.

    ;; AUTHORITY SECTION:

    qq.com. 86400 IN NS dns.qq.com.

    ;; ADDITIONAL SECTION:

    dns.qq.com. 86400 IN A 172.25.254.142

    ;; Query time: 1 msec

    ;; SERVER: 172.25.254.142#53(172.25.254.142)

    ;; WHEN: Thu Apr 20 21:57:54 EDT 2017

    ;; MSG SIZE  rcvd: 99

    [root@mail-westos ~]# 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: 21706

    ;; 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.242.

    ;; AUTHORITY SECTION:

    westos.com. 86400 IN NS dns.westos.com.

    ;; ADDITIONAL SECTION:

    dns.westos.com. 86400 IN A 172.25.254.142

    ;; Query time: 0 msec

    ;; SERVER: 172.25.254.142#53(172.25.254.142)

    ;; WHEN: Thu Apr 20 21:58:01 EDT 2017

    ;; MSG SIZE  rcvd: 103

    [root@mail-westos ~]#

    2.发邮件收邮件

    #mail-qq端

    [root@mail-qq named]# >/var/log/maillog

    [root@mail-qq named]# mail root@westos.com

    Subject: aa

    aa

    .

    EOT

    [root@mail-qq named]# mailq

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

    DDCC017E876      416 Thu Apr 20 22:30:02  root@mail-qq.qq.com

                (connect to 172.25.254.242[172.25.254.242]:25: Connection refused)

                                             root@westos.com

    -- 0 Kbytes in 1 Request.

    [root@mail-qq named]# cat /var/log/maillog

    Apr 20 22:30:02 mail-qq postfix/pickup[1380]: DDCC017E876: uid=0 from=<root>

    Apr 20 22:30:02 mail-qq postfix/cleanup[30746]: DDCC017E876: message-id=<20170421023002.DDCC017E876@mail-qq.qq.com>

    Apr 20 22:30:02 mail-qq postfix/qmgr[1381]: DDCC017E876: from=<root@mail-qq.qq.com>, size=416, nrcpt=1 (queue active)

    Apr 20 22:30:02 mail-qq postfix/smtp[30748]: warning: numeric domain name in resource data of MX record for westos.com: 172.25.254.242

    Apr 20 22:30:02 mail-qq postfix/smtp[30748]: connect to 172.25.254.242[172.25.254.242]:25: Connection refused

    Apr 20 22:30:03 mail-qq postfix/smtp[30748]: DDCC017E876: to=<root@westos.com>, relay=none, delay=0.15, delays=0.13/0.02/0/0, dsn=4.4.1, status=deferred (connect to 172.25.254.242[172.25.254.242]:25: Connection refused)

    [root@mail-qq named]# netstat -antlpe | grep master

    tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      0          24066      1379/master         

    tcp6       0      0 ::1:25                  :::*                    LISTEN      0          24067      1379/master         

    [root@mail-qq named]# vim /etc/postfix/main.cf

    #116 inet_interfaces = all

    [root@mail-qq named]# systemctl restart postfix.service

    [root@mail-qq named]# netstat -antlpe | grep master

    tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          108540     30966/master        

    tcp6       0      0 :::25                   :::*                    LISTEN      0          108541     30966/master        

    [root@mail-qq named]# postqueue -f

    [root@mail-qq named]# mailq

    Mail queue is empty

    [root@mail-qq named]# >/var/log/maillog

    [root@mail-qq named]# vim /etc/postfix/main.cf

    #164 mydestination = $myhostname, $mydomain, localhost

    # 76 myhostname = mail-qq.qq.com

    # 83 mydomain = qq.com

    # 99 myorigin = $mydomain

    [root@mail-qq named]# systemctl restart postfix.service

    [root@mail-qq named]# mail root@westos.com

    Subject: 233

    233

    .

    EOT

    [root@mail-qq named]# mailq

    Mail queue is empty

    [root@mail-qq named]# mail

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

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

        1 user@localhost.local  Thu Apr 20 21:30 518/36184 "[abrt] full crash report"

    >N  2 root                  Thu Apr 20 22:46  21/700   "33"

    & 2

    Message  2:

    From root@westos.com  Thu Apr 20 22:46:44 2017

    Return-Path: <root@westos.com>

    X-Original-To: root@qq.com

    Delivered-To: root@qq.com

    Date: Thu, 20 Apr 2017 22:46:44 -0400

    To: root@qq.com

    Subject: 33

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

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

    From: root@westos.com (root)

    Status: R

    33

    & q

    Held 2 messages in /var/spool/mail/root

    You have mail in /var/spool/mail/root

    #mail-westos端

    [root@mail-westos ~]# >/var/log/maillog

    [root@mail-westos ~]# netstat -antlpe | grep master

    tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      0          24357      1374/master         

    tcp6       0      0 ::1:25                  :::*                    LISTEN      0          24358      1374/master          

    [root@mail-westos ~]# vim /etc/postfix/main.cf

    #116 inet_interfaces = all

    [root@mail-westos ~]# systemctl restart postfix.service

    [root@mail-westos ~]# netstat -antlpe | grep master

    tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          108525     30540/master        

    tcp6       0      0 :::25                   :::*                    LISTEN      0          108526     30540/master        

    [root@mail-westos ~]# mailq

    Mail queue is empty

    [root@mail-westos ~]# mail

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

    "/var/spool/mail/root": 1 message 1 new

    >N  1 user@localhost.local  Thu Apr 20 21:40 515/36032 "[abrt] full crash report"

    & q

    Held 1 message in /var/spool/mail/root

    [root@mail-westos ~]# >/var/log/maillog

    [root@mail-westos ~]# vim /etc/postfix/main.cf

    #164 mydestination = $myhostname, $mydomain, localhost

    # 76 myhostname = mail-westos.westos.com

    # 83 mydomain = westos.com

    # 99 myorigin = $mydomain

    [root@mail-westos ~]# systemctl restart postfix.service

    [root@mail-westos ~]# mailq

    Mail queue is empty

    [root@mail-westos ~]# mail

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

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

     U  1 user@localhost.local  Thu Apr 20 21:40 516/36042 "[abrt] full crash report"

    >N  2 root                  Thu Apr 20 22:44  21/704   "233"

    & 2

    Message  2:

    From root@qq.com  Thu Apr 20 22:44:34 2017

    Return-Path: <root@qq.com>

    X-Original-To: root@westos.com

    Delivered-To: root@westos.com

    Date: Thu, 20 Apr 2017 22:44:33 -0400

    To: root@westos.com

    Subject: 233

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

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

    From: root@qq.com (root)

    Status: R

    233

    & q

    Held 2 messages in /var/spool/mail/root

    [root@mail-westos ~]# mail root@qq.com

    Subject: 33

    33

    .

    EOT

    [root@mail-westos ~]# mailq

    Mail queue is empty

    [root@mail-westos ~]#

    3.远程发邮件

    [kiosk@foundation42 yum.repos.d]$ telnet 172.25.254.142 25

    Trying 172.25.254.142...

    Connected to 172.25.254.142.

    Escape character is '^]'.

    220 mail-qq.qq.com ESMTP Postfix

    mail from:root@qq.com

    250 2.1.0 Ok

    rcpt to:root@westos.com

    250 2.1.5 Ok

    data

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

    aaaaaaaa

    aaaaaaaaaaaaa

    .

    250 2.0.0 Ok: queued as 2069117E876

    quit

    221 2.0.0 Bye

    Connection closed by foreign host.

    [kiosk@foundation42 yum.repos.d]$

    [root@mail-westos ~]# mail

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

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

     U  1 user@localhost.local  Thu Apr 20 21:40 516/36042 "[abrt] full crash report"

        2 root                  Thu Apr 20 22:44  22/715   "233"

    >N  3 root@qq.com           Thu Apr 20 23:04  14/496   

    & 3

    Message  3:

    From root@qq.com  Thu Apr 20 23:04:18 2017

    Return-Path: <root@qq.com>

    X-Original-To: root@westos.com

    Delivered-To: root@westos.com

    Status: R

    aaaaaaaa

    aaaaaaaaaaaaa

    & q

    Held 3 messages in /var/spool/mail/root

    You have mail in /var/spool/mail/root

    [root@mail-westos ~]#

    4.远程接受邮件

    ######配置了DNS的服务端######

    [root@mail-qq named]# mail student@westos.com    #向用户student@westos.com发送邮件

    Subject: 2333

    2333

    .

    EOT

    [root@mail-qq named]# mailq    #邮件已发送

    Mail queue is empty

    [root@mail-qq named]# mail

    No mail for root

    [root@mail-qq named]#

    ######拥有dovecot的客户端######

    [root@mail-westos ~]# mail

    No mail for root

    [root@mail-westos ~]# mail -u student

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

    "/var/mail/student": 1 message 1 new

    >N  1 root                  Thu Apr 20 23:23  21/718   "2333"

    & 1

    Message  1:

    From root@qq.com  Thu Apr 20 23:23:45 2017

    Return-Path: <root@qq.com>

    X-Original-To: student@westos.com

    Delivered-To: student@westos.com

    Date: Thu, 20 Apr 2017 23:23:44 -0400

    To: student@westos.com

    Subject: 2333

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

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

    From: root@qq.com (root)

    Status: R

    2333

    & q

    Held 1 message in /var/mail/student

    [root@mail-westos ~]# yum install dovecot -y   #下载dovecot,用来接受文件,993-pop3s,995-imaps,110-pop,143-imap

    [root@mail-westos ~]# systemctl restart dovecot

    [root@mail-westos ~]# netstat -antlpe | grep dovecot

    tcp        0      0 0.0.0.0:993             0.0.0.0:*               LISTEN      0          132321     31303/dovecot       

    tcp        0      0 0.0.0.0:995             0.0.0.0:*               LISTEN      0          132297     31303/dovecot       

    tcp        0      0 0.0.0.0:110             0.0.0.0:*               LISTEN      0          132295     31303/dovecot       

    tcp        0      0 0.0.0.0:143             0.0.0.0:*               LISTEN      0          132319     31303/dovecot       

    tcp6       0      0 :::993                  :::*                    LISTEN      0          132322     31303/dovecot       

    tcp6       0      0 :::995                  :::*                    LISTEN      0          132298     31303/dovecot       

    tcp6       0      0 :::110                  :::*                    LISTEN      0          132296     31303/dovecot       

    tcp6       0      0 :::143                  :::*                    LISTEN      0          132320     31303/dovecot       

    [root@mail-westos ~]# >/var/log/maillog

    [kiosk@foundation42 ~]$ mutt -f pop://student@172.25.254.242

    [root@mail-westos ~]# cat /var/log/maillog

    Apr 20 23:28:33 mail-westos dovecot: pop3-login: Login: user=<student>, method=PLAIN, rip=172.25.254.42, lip=172.25.254.242, mpid=31358, TLS, session=<KXkj2qRNEgCsGf4q>

    Apr 20 23:28:33 mail-westos dovecot: pop3(student): Error: user student: Initialization failed: Namespace '': Mail storage autodetection failed with home=/home/student

    Apr 20 23:28:33 mail-westos dovecot: pop3(student): Error: Invalid user settings. Refer to server log for more information.

    Apr 20 23:28:39 mail-westos dovecot: pop3-login: Aborted login (tried to use disallowed plaintext auth): user=<>, rip=172.25.254.42, lip=172.25.254.242, session=<Xb1/2qRNEwCsGf4q>

    [root@mail-westos ~]# vim /etc/dovecot/dovecot.conf

    # 24 protocols = imap pop3 lmtp

    # 49 disable_plaintext_auth = no

    [root@mail-westos ~]# vim /etc/dovecot/conf.d/10-mail.conf

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

    [root@mail-westos ~]# systemctl restart dovecot.service

    [root@mail-westos ~]# >/var/log/maillog

    [kiosk@foundation42 ~]$ mutt -f pop://student@172.25.254.242

    [root@mail-westos ~]# cat /var/log/maillog

    Apr 20 23:31:47 mail-westos dovecot: pop3-login: Login: user=<student>, method=PLAIN, rip=172.25.254.42, lip=172.25.254.242, mpid=31489, TLS, session=<VzG15aRNFACsGf4q>

    Apr 20 23:31:47 mail-westos dovecot: pop3(student): Error: chown(/home/student/mail/.imap, group=12(mail)) failed: Operation not permitted (egid=1000(student), group based on /var/mail/student - see http://wiki2.dovecot.org/Errors/ChgrpNoPerm)

    Apr 20 23:31:47 mail-westos dovecot: pop3(student): Error: Couldn't open INBOX: Permission denied

    Apr 20 23:31:47 mail-westos dovecot: pop3(student): Couldn't open INBOX top=0/0, retr=0/0, del=0/0, size=0

    Apr 20 23:31:53 mail-westos dovecot: pop3-login: Aborted login (tried to use disallowed plaintext auth): user=<>, rip=172.25.254.42, lip=172.25.254.242, session=<D50R5qRNFQCsGf4q>

    [root@mail-westos ~]# su - student

    [student@mail-westos ~]$ mkdir /home/student/mail/.imap

    [student@mail-westos ~]$ exit

    logout

    [root@mail-westos ~]# >/var/log/maillog

    [kiosk@foundation42 ~]$ mutt -f pop://student@172.25.254.242

    [root@mail-westos ~]# cat /var/log/maillog

    Apr 20 23:33:07 mail-westos dovecot: pop3-login: Login: user=<student>, method=PLAIN, rip=172.25.254.42, lip=172.25.254.242, mpid=31541, TLS, session=<OwF/6qRNGACsGf4q>

    Apr 20 23:33:07 mail-westos dovecot: pop3(student): Error: chown(/home/student/mail/.imap/INBOX, group=12(mail)) failed: Operation not permitted (egid=1000(student), group based on /var/mail/student - see http://wiki2.dovecot.org/Errors/ChgrpNoPerm)

    Apr 20 23:33:07 mail-westos dovecot: pop3(student): Error: Couldn't open INBOX: Permission denied

    Apr 20 23:33:07 mail-westos dovecot: pop3(student): Couldn't open INBOX top=0/0, retr=0/0, del=0/0, size=0

    Apr 20 23:33:13 mail-westos dovecot: pop3-login: Aborted login (tried to use disallowed plaintext auth): user=<>, rip=172.25.254.42, lip=172.25.254.242, session=<E2Xb6qRNGQCsGf4q>

    [root@mail-westos ~]# su - student

    Last login: Thu Apr 20 23:32:12 EDT 2017 on pts/0

    [student@mail-westos ~]$ touch /home/student/mail/.imap/INBOX

    [student@mail-westos ~]$ exit

    logout

    [root@mail-westos ~]#

    [kiosk@foundation42 ~]$ mutt -f pop://student@172.25.254.242

    1 kept, 0 deleted.

    5.远程图形界面接发邮件

    ######真机,下载邮件客户端thunderbird######

    [root@foundation42 ~]# rpm -ivh /home/kiosk/Desktop/thunderbird-31.2.0-1.el7.x86_64.rpm

    warning: /home/kiosk/Desktop/thunderbird-31.2.0-1.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY

    Preparing...                          ################################# [100%]

    Updating / installing...

       1:thunderbird-31.2.0-1.el7         ################################# [100%]

    [root@foundation42 ~]# thunderbird

    ######拥有dovecot的客户端######

    [root@mail-westos ~]# vim /etc/dovecot/dovecot.conf

    # 48 login_trusted_networks = 0.0.0.0/0    #接受所有主机的发送过来的邮件

    [root@mail-westos ~]# systemctl restart dovecot.service

    ######配置了DNS的服务端######

    [root@mail-qq named]# vim /etc/named.rfc1912.zones     #dns正向解析

    # 37 zone "eastos.com" IN {

    # 38         type master;

    # 39         file "eastos.com.zone";

    # 40         allow-update { none; };

    # 41 };

    [root@mail-qq named]# ls

    data  dynamic  named.ca  named.empty  named.localhost  named.loopback  qq.com.zone  slaves  westos.com.zone

    [root@mail-qq named]# cp -p westos.com.zone eastos.com.zone

    [root@mail-qq named]# vim eastos.com.zone

    [root@mail-qq named]# cat eastos.com.zone

    $TTL 1D

    @ IN SOA dns.eastos.com. root.eastos.com. (

    0 ; serial

    1D ; refresh

    1H ; retry

    1W ; expire

    3H ) ; minimum

    NS dns.eastos.com.

    dns A 172.25.254.142

    eastos.com. MX 1 172.25.254.116.

    [root@mail-qq named]# systemctl restart named

    6.连接数据库的虚拟帐号

    ######创建email数据库,emailuser虚拟用户数据表######

    [root@mail-qq named]# yum install mariadb-server -y    #下载mysql

    [root@mail-qq named]# vim /etc/my.cnf

    # 10 skip-networking=1    #跳过网络端口,不对外开放

    [root@mail-qq named]# systemctl restart mariadb

    [root@mail-qq named]# mysql_secure_installation    #mysql安全安装加密

    /usr/bin/mysql_secure_installation: line 379: find_mysql_client: command not found

    NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB

          SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

    In order to log into MariaDB to secure it, we'll need the current

    password for the root user.  If you've just installed MariaDB, and

    you haven't set the root password yet, the password will be blank,

    so you should just press enter here.

    Enter current password for root (enter for none):

    OK, successfully used password, moving on...

    Setting the root password ensures that nobody can log into the MariaDB

    root user without the proper authorisation.

    Set root password? [Y/n] y

    New password:

    Re-enter new password:

    Password updated successfully!

    Reloading privilege tables..

     ... Success!

    By default, a MariaDB installation has an anonymous user, allowing anyone

    to log into MariaDB without having to have a user account created for

    them.  This is intended only for testing, and to make the installation

    go a bit smoother.  You should remove them before moving into a

    production environment.

    Remove anonymous users? [Y/n] y

     ... Success!

    Normally, root should only be allowed to connect from 'localhost'.  This

    ensures that someone cannot guess at the root password from the network.

    Disallow root login remotely? [Y/n] y

     ... Success!

    By default, MariaDB comes with a database named 'test' that anyone can

    access.  This is also intended only for testing, and should be removed

    before moving into a production environment.

    Remove test database and access to it? [Y/n] y

     - Dropping test database...

     ... Success!

     - Removing privileges on test database...

     ... Success!

    Reloading the privilege tables will ensure that all changes made so far

    will take effect immediately.

    Reload privilege tables now? [Y/n] y

     ... Success!

    Cleaning up...

    All done!  If you've completed all of the above steps, your MariaDB

    installation should now be secure.

    Thanks for using MariaDB!

    [root@mail-qq named]# yum install httpd php php-mysql -y    #下载httpd,php,php-mysql

    [root@mail-qq html]# lftp 172.25.254.250

    lftp 172.25.254.250:~> cd pub/docs/software/

    lftp 172.25.254.250:/pub/docs/software> ls

    -rwxr-xr-x    1 1000     1000      3086326 Dec 25  2013 phpMyAdmin-2.11.3-all-languages.tar.bz2

    -rwxr-xr-x    1 1000     1000      4548030 Dec 25  2013 phpMyAdmin-3.4.0-all-languages.tar.bz2

    -rw-rw-r--    1 1000     1000      2713600 Jun 07  2015 taobao.tar

    -rwxr-xr-x    1 1000     1000     52387876 Feb 01  2015 thunderbird-31.2.0-1.el7.x86_64.rpm

    -rwxr-xr-x    1 1000     1000     36902724 Feb 01  2015 thunderbird-31.4.0.tar.bz2

    lftp 172.25.254.250:/pub/docs/software> get phpMyAdmin-3.4.0-all-languages.tar.bz2

    4548030 bytes transferred                                                 

    lftp 172.25.254.250:/pub/docs/software> quit

    [root@mail-qq html]# ls

    phpMyAdmin-3.4.0-all-languages.tar.bz2

    [root@mail-qq html]# tar jxf phpMyAdmin-3.4.0-all-languages.tar.bz2

    [root@mail-qq html]# ls

    phpMyAdmin-3.4.0-all-languages  phpMyAdmin-3.4.0-all-languages.tar.bz2

    [root@mail-qq html]# rm -fr phpMyAdmin-3.4.0-all-languages.tar.bz2

    [root@mail-qq html]# ls

    phpMyAdmin-3.4.0-all-languages

    [root@mail-qq html]# mv phpMyAdmin-3.4.0-all-languages/ mysqladmin

    [root@mail-qq html]# ls

    mysqladmin

    [root@mail-qq html]# cd mysqladmin/

    [root@mail-qq mysqladmin]# cp config.sample.inc.php config.inc.php

    [root@mail-qq mysqladmin]# vim config.inc.php

    # 17 $cfg['blowfish_secret'] = 'westos';

    [root@mail-qq mysqladmin]# systemctl restart httpd

    [root@mail-qq mysqladmin]# firefox

    ######授权给postfix用户######

    [root@mail-qq mysqladmin]# mysql -uroot -pwestos

    Welcome to the MariaDB monitor.  Commands end with ; or g.

    Your MariaDB connection id is 26

    Server version: 5.5.35-MariaDB MariaDB Server

    Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others.

    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

    MariaDB [(none)]> CREATE USER postfix@localhost identified by "postfix";

    Query OK, 0 rows affected (0.00 sec)

    MariaDB [(none)]> GRANT INSERT,SELECT,UPDATE ON email.* to postfix@localhost;

    Query OK, 0 rows affected (0.00 sec)

    MariaDB [(none)]> quit

    Bye

    [root@mail-qq mysqladmin]# firefox

    ######创建vmail用户,作为虚拟用户的使用身份######

    [root@mail-qq mysqladmin]# cd

    [root@mail-qq ~]# groupadd -g 888 vmail

    [root@mail-qq ~]# useradd -g 888 -u 888 vmail

    [root@mail-qq ~]# cd /home/vmail/

    ######建立postfix文件mailuser.cf,maildomain.cf,mailbox.cf,可查找虚拟用户名,domain,以及maildir目录######

    [root@mail-qq vmail]# cd /etc/postfix/

    [root@mail-qq postfix]# ls

    access     generic        main.cf    relocated  virtual

    canonical  header_checks  master.cf  transport

    [root@mail-qq postfix]# vim mailuser.cf

    [root@mail-qq postfix]# cat mailuser.cf

    hosts = localhost

    user = postfix

    password = postfix

    dbname = email

    table = emailuser

    select_field = username

    where_field = username

    [root@mail-qq postfix]# postmap -q "lee@westos.com" mysql:/etc/postfix/mailuser.cf

    lee@westos.com

    [root@mail-qq postfix]# postmap -q "loo@westos.com" mysql:/etc/postfix/mailuser.cf

    [root@mail-qq postfix]# cp mailuser.cf maildomain.cf

    [root@mail-qq postfix]# cp mailuser.cf mailbox.cf

    [root@mail-qq postfix]# vim maildomain.cf

    [root@mail-qq postfix]# cat maildomain.cf

    hosts = localhost

    user = postfix

    password = postfix

    dbname = email

    table = emailuser

    select_field = domain    #既定事实,数据表的段名

    where_field = domain    #想要查找的domain

    [root@mail-qq postfix]# postmap -q "westos.com" mysql:/etc/postfix/maildomain.cf

    westos.com

    [root@mail-qq postfix]# postmap -q "qq.com" mysql:/etc/postfix/maildomain.cf

    [root@mail-qq postfix]# vim mailbox.cf

    [root@mail-qq postfix]# cat mailbox.cf

    hosts = localhost

    user = postfix

    password = postfix

    dbname = email

    table = emailuser

    select_field = maildir

    where_field = username

    [root@mail-qq postfix]# postmap -q "lee@westos.com" mysql:/etc/postfix/mailbox.cf

    /var/spool/westos.com/lee/

    [root@mail-qq postfix]# postmap -q "loo@westos.com" mysql:/etc/postfix/mailbox.cf

    [root@mail-qq postfix]#

    ######用虚拟用户发送邮件######

    [root@mail-qq postfix]# postconf -d | grep virtual

    address_verify_virtual_transport = $virtual_transport

    propagate_unmatched_extensions = canonical, virtual

    proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps $sender_bcc_maps $recipient_bcc_maps $smtp_generic_maps $lmtp_generic_maps $alias_maps

    unknown_virtual_alias_reject_code = 550

    unknown_virtual_mailbox_reject_code = 550

    virtual_alias_domains = $virtual_alias_maps

    virtual_alias_expansion_limit = 1000

    virtual_alias_maps = $virtual_maps

    virtual_alias_recursion_limit = 1000

    virtual_delivery_slot_cost = $default_delivery_slot_cost

    virtual_delivery_slot_discount = $default_delivery_slot_discount

    virtual_delivery_slot_loan = $default_delivery_slot_loan

    virtual_destination_concurrency_failed_cohort_limit = $default_destination_concurrency_failed_cohort_limit

    virtual_destination_concurrency_limit = $default_destination_concurrency_limit

    virtual_destination_concurrency_negative_feedback = $default_destination_concurrency_negative_feedback

    virtual_destination_concurrency_positive_feedback = $default_destination_concurrency_positive_feedback

    virtual_destination_rate_delay = $default_destination_rate_delay

    virtual_destination_recipient_limit = $default_destination_recipient_limit

    virtual_extra_recipient_limit = $default_extra_recipient_limit

    virtual_gid_maps =

    virtual_initial_destination_concurrency = $initial_destination_concurrency

    virtual_mailbox_base =

    virtual_mailbox_domains = $virtual_mailbox_maps

    virtual_mailbox_limit = 51200000

    virtual_mailbox_lock = fcntl, dotlock

    virtual_mailbox_maps =

    virtual_minimum_delivery_slots = $default_minimum_delivery_slots

    virtual_minimum_uid = 100

    virtual_recipient_limit = $default_recipient_limit

    virtual_recipient_refill_delay = $default_recipient_refill_delay

    virtual_recipient_refill_limit = $default_recipient_refill_limit

    virtual_transport = virtual

    virtual_uid_maps =

    [root@mail-qq postfix]# postconf -e "virtual_mailbox_base = /home/vmail"

    [root@mail-qq postfix]# postconf -e "virtual_uid_maps = static:888"

    [root@mail-qq postfix]# postconf -e "virtual_gid_maps = static:888"

    [root@mail-qq postfix]# postconf -e "virtual_alias_maps = mysql:/etc/postfix/mailuser.cf"

    [root@mail-qq postfix]# postconf -e "virtual_mailbox_domains = mysql:/etc/postfix/maildomain.cf"

    [root@mail-qq postfix]# postconf -e "virtual_mailbox_maps = mysql:/etc/postfix/mailbox.cf"

    [root@mail-qq postfix]# postmap -q "lee@westos.com" mysql:/etc/postfix/mailuser.cf

    lee@westos.com

    [root@mail-qq postfix]# postmap -q "lee@westos.com" mysql:/etc/postfix/mailbox.cf

    /var/spool/westos.com/lee/

    [root@mail-qq postfix]# postmap -q "westos.com" mysql:/etc/postfix/maildomain.cf

    westos.com

    [root@mail-qq postfix]# cd /home/vmail/

    [root@mail-qq vmail]# ls

    [root@mail-qq vmail]# mail lee@westos.com

    Subject: 233333

    23333333333333333333333

    .

    EOT

    [root@mail-qq vmail]# ls

    westos.com

    [root@mail-qq vmail]# cd westos.com/

    [root@mail-qq westos.com]# ls

    lee

    [root@mail-qq westos.com]# cd lee/

    [root@mail-qq lee]# ls

    cur  new  tmp

    [root@mail-qq new]# cat Cmysql:/etc/postfix/maildomain.cf

    cat: Cmysql:/etc/postfix/maildomain.cf: No such file or directory

    [root@mail-qq new]# cd ..

    [root@mail-qq lee]# cat new/1492763498.Vfd01I134975bM202916.mail-qq.qq.com

    Return-Path: <root@qq.com>

    X-Original-To: lee@westos.com

    Delivered-To: lee@westos.com

    Received: by mail-qq.qq.com (Postfix, from userid 0)

    id 13A1B26D8BE; Fri, 21 Apr 2017 04:31:37 -0400 (EDT)

    Date: Fri, 21 Apr 2017 04:31:37 -0400

    To: lee@westos.com

    Subject: 233333

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

    MIME-Version: 1.0

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

    Content-Transfer-Encoding: 7bit

    Message-Id: <20170421083138.13A1B26D8BE@mail-qq.qq.com>

    From: root@qq.com (root)

    23333333333333333333333

    [root@mail-qq lee]# cd ..

    [root@mail-qq westos.com]# cd ..

    [root@mail-qq vmail]# ls

    westos.com

    [root@mail-qq vmail]# mail loo@163.com

    Subject: 199999

    1999999

    .

    EOT

    [root@mail-qq vmail]# ls

    163.com  westos.com

    [root@mail-qq vmail]# cd 163.com/

    [root@mail-qq 163.com]# ls

    loo

    [root@mail-qq 163.com]# cd loo/

    [root@mail-qq loo]# ls

    cur  new  tmp

    [root@mail-qq loo]# cat new/1492763826.Vfd01I300e415M855100.mail-qq.qq.com

    Return-Path: <root@qq.com>

    X-Original-To: loo@163.com

    Delivered-To: loo@163.com

    Received: by mail-qq.qq.com (Postfix, from userid 0)

    id BD6F63259; Fri, 21 Apr 2017 04:37:06 -0400 (EDT)

    Date: Fri, 21 Apr 2017 04:37:06 -0400

    To: loo@163.com

    Subject: 199999

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

    MIME-Version: 1.0

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

    Content-Transfer-Encoding: 7bit

    Message-Id: <20170421083706.BD6F63259@mail-qq.qq.com>

    From: root@qq.com (root)

    1999999

    [root@mail-qq loo]# 

  • 相关阅读:
    Springboot html映射
    table 合并单元格
    Idea中Spring Boot 启动出错
    Modal模态框scrolltop保留上次位移的解决方案
    8、如何实现浏览器的前进、后退操作?
    html中table并排展示
    两个有序的链表的合并
    7、链表(下):如何轻松写出正确的链表代码?
    2018.10.12
    c语言关键字:const
  • 原文地址:https://www.cnblogs.com/Virgo-sept/p/6747742.html
Copyright © 2020-2023  润新知