一、基于电子邮件发送:

电子邮件发送

(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)电子邮件以进行发送以后,又将该电子邮件退回给始发电子邮件服务器和/或用户

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

化程序,它的组件由master进程控制。
Postfix的主配置文件是/etc/postfix/main.cf,可以使用文本编辑器或postconf命令进行编辑。postconf
命令还可用于确定Postfix的所有当前和默认配置设置或逐项确定这些设置。
默认情况下,Postfix仅侦听来自本地主机的传入电子邮件。若要重新配置postfix以接收从远程主机发
送的本地邮件,必须在/etc/postfix/main.cf中设置inet_interfaces = all
对电子邮件进行故障排除时,将在/var/log/maillog中保留所有与邮件相关的操作日志,其中包括关于
被事件和成功事件的信息。mailq命令(或postqueue -p)显示已排队的所有传出邮件的列表。若要尝试
再次立即发送所有已排队的邮件,可以运行postfix flush命令(或postqueue -f);否则,postfix将大
约每小时尝试重新发送一次,直至邮件被接受或过期。

实验环境:                服务器端server: willis.com   172.25.254.1                客户端desktop:  desktop.com   172.25.254.2 实验内容: 1.邮件远程发送                  2.邮件别名                  3.邮件群发                  4.空壳邮件服务搭建                  5.不同服务器之间邮件传送(DNS邮件解析)                  6.出栈地址伪装                   7.客户端主机名/地址限制 :(通过IP限制发件)                    8.通过发件人地址进行限制 :(通过地址限制发件)                  9.通过收件人地址进行过滤 :(限制收件)                               1.邮件远程发送  1.1服务端                 1.1-1   systemctl stop firewalld            yum install postfix         1.1-2vim /etc/postfix/main.cf                   mydomain = willis.com          #收件方看到的方邮件方主机名                   myorigin = $mydomain                   inet_interfaces = all          #开启接口                 #inet_interfaces = localhost   #关闭只允许本地访问                   mydestination = $myhostname, $mydomain, localhost  #         1.1-3.systemctl restart  postfix                   netstat antlpe |grep master  #查看端口 [root@willis ~]# netstat -antple |grep master tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          43632      2497/master         tcp6       0      0 :::25                   :::*                    LISTEN      0          43633      2497/master               1.2.远程发送端(客户端) [root@desktop ~]# yum install telnet -y [root@desktop ~]# telnet 172.25.254.1 25Trying 172.25.254.1...Connected to 172.25.254.1.Escape character is '^]'.220 linux.com ESMTP Postfixehlo hello250-linux.com250-PIPELINING250-SIZE 10240000250-VRFY250-ETRN250-ENHANCEDSTATUSCODES250-8BITMIME250 DSN 2.邮件别名            2.1.vim /etc/aliases                 最后添加  admin:    root    ###给root一个别名为admin          2.2.postalias /etc/aliases     ###重读别名文件          2.3.systemctl restart  postfix          2.4.id admin       ###可查看到admin用户不存在                   mail admin     ###相当于给root用户发送邮件                   mail        ###查看root用户的邮件 [root@willis ~]# vim /etc/aliases [root@willis ~]# postalias  /etc/aliases [root@willis ~]# systemctl restart postfix.service [root@willis ~]# id willis id: willis: no such user [root@willis ~]# mail willis Subject: hello hello , my name is willis,how are you. . EOT [root@willis ~]# mail Heirloom Mail version 12.5 7/5/10.  Type ? for help. "/var/spool/mail/root": 1 message 1 new >N  1 root                  Fri Sep  9 10:36  18/567   "hello" & 1 Message  1: From root@willis.com  Fri Sep  9 10:36:54 2016 Return-Path: 
X-Original-To: willis Delivered-To: willis@willis.com Date: Fri, 09 Sep 2016 10:36:54 +0800 To: willis@willis.com Subject: hello User-Agent: Heirloom mailx 12.5 7/5/10 Content-Type: text/plain; charset=us-ascii From: root@willis.com (root) Status: R hello , my name is willis,how are you. & q Held 1 message in /var/spool/mail/root 3.邮件群发     1.vim /etc/postfix/moreuser             root             student       2.vim /etc/aliases             最后添加 more:  :include:/etc/postfix/moreuser       3.postalias /etc/aliases      4.systemctl restart  postfix        5.mail more       ###群发邮件             mail         ###查看root用户的邮件             mail -u student ###查看student用户的邮件   [root@willis ~]# >/var/spool/mail/root [root@willis ~]# useradd student [root@willis ~]# vim /etc/postfix/moreuser                              root                              student [root@willis ~]# vim /etc/aliases [root@willis ~]# postalias /etc/aliases [root@willis ~]# systemctl restart postfix.service [root@willis ~]# mail more Subject: hello-world hello world. . EOT [root@willis ~]# mail Heirloom Mail version 12.5 7/5/10.  Type ? for help. "/var/spool/mail/root": 1 message 1 new >N  1 root                  Fri Sep  9 10:42  21/661   "hello-world" & q Held 1 message in /var/spool/mail/root [root@willis ~]# mail -u student Heirloom Mail version 12.5 7/5/10.  Type ? for help. "/var/mail/student": 1 message 1 new >N  1 root                  Fri Sep  9 10:42  21/664   "hello-world" & q Held 1 message in /var/mail/student       4.空壳邮件服务搭建        4.1.在desktop(另外一台仅中转邮件的服务器,空壳端)上          postconf -e "inet_interfaces = all"          postconf -e "mydomain = willis.com"          postconf -e 'myorigin = $mydomain'          postconf -e "mydestination = "          postconf -e "relayhost = 172.25.254.1"          postconf -e "local_transport = error:local delivery disabled "          systemctl restart postfix.service(附注:火墙要关闭systemctl stop firewalld  selinux要置0 setenforce 0 ) [root@desktop ~]# postconf -e "mydomain = willis.com" [root@desktop ~]# postconf -e 'myorigin = $mydomain' [root@desktop ~]# postconf -e "mydestination = " [root@desktop ~]#  postconf -e "relayhost = 172.25.254.1" [root@desktop ~]# postconf -e "local_transport = error:local delivery disabled " [root@desktop ~]# systemctl restart postfix.service    4.2.在主服务器server上          postconf -e "mynetworks = 127.0.0.0/8 172.25.254.0/24"        #接受来自那个网段的邮件          systemctl restart postfix.service(附注:火墙要关闭systemctl stop firewalld        selinux要置0 setenforce 0 ) [root@willis ~]# postconf -e "mynetworks = 127.0.0.0/8 172.25.254.0/24" You have mail in /var/spool/mail/root [root@willis ~]# systemctl restart postfix.service     4.3.实验验证    在desktop(另外一台仅中转邮件的服务器)上(> /var/log/maillog       ###清空邮件日志)   mail root    ###发送文件[root@desktop ~]# >/var/log/maillog [root@desktop ~]# mail root Subject: beautiful world Threr are many beautiful things. . EOT [root@desktop ~]# mail No mail for root    在主服务器server上( > /var/spool/mail/root ###清空邮件)   mail         ###查看文件 [root@willis ~]# >/var/spool/mail/root [root@willis ~]# mail Heirloom Mail version 12.5 7/5/10.  Type ? for help. "/var/spool/mail/root": 1 message 1 new >N  1 root                  Fri Sep  9 10:54  21/756   "beautiful world" & q Held 1 message in /var/spool/mail/root 5.不同服务器之间的邮件传送(DNS邮件解析记录)    将前面做实验的环境恢复到初始状态。    vim /etc/postfix/main.cf                  mydomain = willis.com                          myorigin = $mydomain                  inet_interfaces = all                          #inet_interfaces = localhost                    mydestination = $myhostname, $mydomain, localhost      5-1server端配置dns hostnamectl set-hostname mail.willis.com 安装DNS:yum install bind -y 1)vim /etc/resolv.conf            search willis.com        nameserver 172.25.254.12)vim /etc/named.rfc1912.zoneszone "willis.com" IN {
       type master;        file "willis.com.zone";        allow-update { none; }; }; zone "redhat.com" IN {
       type master;        file "redhat.com.zone";        allow-update { none; }; };3)cd /var/named/      cp -p named.localhost willis.com.zone4)vim willis.com.zone$TTL 1D @       IN SOA  dns.willis.com. root. (                                        0       ; serial                                        1D      ; refresh                                        1H      ; retry                                        1W      ; expire                                        3H )    ; minimum        NS      dns.willis.com. dns     A       172.25.254.1 willis.com.  MX 1    172.25.254.1.5)cp -p willis.com.zone redhat.com.zone      vim redhat.com.zone$TTL 1D @       IN SOA  dns.redhat.com. root. (                                        0       ; serial                                        1D      ; refresh                                        1H      ; retry                                        1W      ; expire                                        3H )    ; minimum        NS      dns.redhat.com. dns     A       172.25.254.1 redhat  MX 1    172.25.254.2.                             6)systemctl start named    5-2 . desktop端配置    hostnamectl set-hostname mail.redhat.com      1)vim /etc/resolv.conf             search   redhat.com               nameserver  172.25.254.1     2)测试           mail root@willis.com         mail root@redhat.com [root@mail ~]# mail root@willis.com Subject: hello-willis hello . you are a good boy. . EOT [root@mail ~]# mail root@redhat.com Subject: hello goog boy Are you ok now? . EOT You have new mail in /var/spool/mail/root [root@mail ~]# mail [root@mail ~]# mail root@redhat.com Subject: hello good boy. Are you OK now? . EOT [root@mail ~]# mail Heirloom Mail version 12.5 7/5/10.  Type ? for help. "/var/spool/mail/root": 1 message 1 new >N  1 root                  Fri Sep  9 12:24  18/569   "hello good boy." & 1 Message  1: From root@redhat.com  Fri Sep  9 12:24:07 2016 Return-Path:
X-Original-To: root@redhat.com Delivered-To: root@redhat.com Date: Fri, 09 Sep 2016 12:24:07 +0800 To: root@redhat.com Subject: hello good boy. User-Agent: Heirloom mailx 12.5 7/5/10 Content-Type: text/plain; charset=us-ascii From: root@redhat.com (root) Status: R Are you OK now?        6.出栈地址伪装    6.1服务器端(伪装端)    vim /etc/postfix/generic    增加    root@willis.com     admin@hello.com    postmap generic        ###生成generic.db文件    postconf -d | grep generic    postconf -e "smtp_generic_maps = hash:/etc/postfix/generic"    systemctl restart postfix.service    测试        mail root@redhat.com [root@willis postfix]# mail root@redhat.com Subject: hello. 你好呀 . EOT    6.2 接受端 [root@mail ~]# mail Heirloom Mail version 12.5 7/5/10.  Type ? for help. "/var/spool/mail/root": 1 message 1 new >N  1 root                  Fri Sep  9 12:47  21/733   "hello." & 1 Message  1: From admin@hello.com  Fri Sep  9 12:47:10 2016 Return-Path:
X-Original-To: root@redhat.com Delivered-To: root@redhat.com Date: Fri, 09 Sep 2016 12:47:11 +0800 To: root@redhat.com Subject: hello. User-Agent: Heirloom mailx 12.5 7/5/10 Content-Type: text/plain; charset=utf-8 From: admin@hello.com (root) Status: R 你好呀 7.客户端主机名/地址限制 :(通过IP限制发件)      postconf -e "smtpd_client_restrictions                                    = check_client_access hash:/etc/postfix/access"      vim /etc/postfox/main.cf     smtpd_client_restrictions = check_client_access hash:/etc/postfix/access,     vim /etc/postfox/access               192.168.0.4   REJECT              192.168.0     REJECT   postmap access     systemctl restart postfix 8.通过发件人地址进行限制 :(通过地址限制发件)     postconf -e "smtpd_sender_restrictions                                   = check_sender_access hash:/etc/postfix/sender"     vim /etc/postfox/main.cf         smtpd_sender_restrictions =                                        check_sender_access hash:/etc/postfix/sender     vim /etc/postfix/sender                      user@exmaple.com REJECT(OK、RELAY)    postmap sender    systemctl restart postfix9.通过收件人地址进行过滤 :(限制收件)         postconf -e "smtpd_recipient_restrictions = check_recipient_access                                    hash:/etc/postfix/recipient"           vim /etc/postfox/main.cf                        smtpd_recipient_restrictions = check_recipient_access                                    hash:/etc/postfix/recipient           vim /etc/postfix/recipient                            user@example.com  REJECT(OK、RELAY,DISCARDED)         postmap recipient