stmp协议以及邮件的发送

来源:互联网 发布:手机处理数据软件 编辑:程序博客网 时间:2024/06/04 09:01

                                                                                                      #######smtp协议及邮件####

smtp是用来送信的协议,送出邮件的一方是“客户端”,接受邮件的一方称为“服务器端”。

一,基本电子邮件发送

电子邮件发送

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

MDA:“邮件发送代理”。

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

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

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

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

退回:远程服务器接受电子邮件以进行发送以后,又将该电子邮件退回给始发电子邮件服务器和/或用户电子邮件以进行发送以后,又将该电子邮件退回给始发电子邮件服务器和/或用户34Postfix由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将大约每小时尝试重新发送一次,直至邮件被接受或过期。

5重要的Postfix配置指令

可以在/etc/postfix/main.cf文件中找到以下所有指令。

myorigin

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

默认:myorigin = $myhostname

inet_interfaces

控制Postfix侦听传入电子邮件的网络接口。如果设置为loopback-only,仅侦听127.0.0.1和::1,

如果设置为all,则侦听所有网络接口。还可以指定特定地址。

默认:inet_interfaces = localhost

mydestination

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

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

mynetworks

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

默认:mynetworks = 127.0.0.0/8

6relayhost

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

默认:relayhost =

local_transport

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

默认:local_transport = local:$myhostname

postconf -d 显示默认值。

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

7空壳邮件客户端

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

对的应用程序更好标准角色包括:null客户端:运行本地MTA的客户端计算机,使所有电子邮件都可以转发至中央邮件服务器以进行发送,null客户端不接受任何电子邮件的本地发送。

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

过滤垃圾邮件并且仅将正常邮件转发至入站邮件服务器。

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

 

 

 

首先配置实验要用的两台主机:maill-qq.qq.com和mail-westos.westos.com.

 

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

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

 

 

  10 options {

  11 //      listen-on port 53 { any; };

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

  13         directory       "/var/named";

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

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

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

  17 //      allow-query     { any; };

   

  32         dnssec-validation no;

 

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

 

 25 zone "qq.com" IN {

 26         type master;

 27         file "qq.com.zone";

 28         allow-update { none; };

 29 };

 30

 31 zone "westos.com" IN {

 32         type master;

 33         file "westos.com.zone";

 34         allow-update { none; };

 35 };

 36

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

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

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

  1 $TTL 1D

  2 @       IN SOA   dns.westos.com. root.westos.com. (

  3                                         0       ; serial

  4                                         1D      ; refresh

  5                                         1H      ; retry

  6                                         1W      ; expire

  7                                         3H )    ; minimum

  8                         NS      dns.westos.com.

  9 dns                     A       172.25.254.124

 10 westos.com.             MX 1    172.25.254.224.

 

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

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

 

 1 $TTL 1D

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

  3                                         0       ; serial

  4                                         1D      ; refresh

  5                                         1H      ; retry

  6                                         1W      ; expire

  7                                         3H )    ; minimum

  8                 NS      dns.qq.com.

  9 dns             A       172.25.254.124

 10 qq.com.         MX 1    172.25.254.124.

 

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

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

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

[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: 18053

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

 

;; AUTHORITY SECTION:

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

 

;; ADDITIONAL SECTION:

dns.qq.com. 86400 IN A 172.25.254.124

 

;; Query time: 1 msec

;; SERVER: 172.25.254.124#53(172.25.254.124)

;; WHEN: Sun Apr 23 03:49:08 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: 1966

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

 

;; AUTHORITY SECTION:

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

 

;; ADDITIONAL SECTION:

dns.westos.com. 86400 IN A 172.25.254.124

 

;; Query time: 0 msec

;; SERVER: 172.25.254.124#53(172.25.254.124)

;; WHEN: Sun Apr 23 03:49:44 EDT 2017

;; MSG SIZE  rcvd: 103

 

(配置成功后两面都可以dig得到westos.com,以及qq.com.)

此时可以在qq端给westos端发邮件

 

客户端:

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

Subject: hello                                    //邮件必须有一个主题。

hello westos                                      //主题之后是邮件的正文。

.                                                 //邮件以一个独立的“.”结尾,ENTER后即可发送                      

EOT

[root@mail-qq named]# mailq                               //发送邮件后查看自己自己邮箱的邮件是否已经发送,如为空。即已经发送

                                                           如果不为空就是没有发送。看报错。

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

ADB4217E863      429 Sun Apr 23 03:53:11  root@mail-qq.qq.com

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

                                 root@westos.com

 

-- 0 Kbytes in 1 Request.

服务端:

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

116 inet_interfaces = all

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

 

客户端:

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

 86 mydomain = qq.com

 76 myhostname = mail-qq.qq.com

 99 myorigin = $mydomain

 116 inet_interfaces = all

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

[root@mail-qq named]# postsuper -d ADB4217E863                     //用来删除错误邮件。

[root@mail-qq named]# mail root@westos.com                             //再次发送邮件

Subject: hello1

hello1 westos

.

EOT

[root@mail-qq named]# mailq

Mail queue is empty

 

服务端:

[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 ~]# mail                                           //查看是否有收到邮件。

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

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

>N  1 root                  Sun Apr 23 04:30  21/721   "hello"

& 1

Message  1:                                                   //邮件编号查看邮件内容。

From root@qq.com  Sun Apr 23 04:30:46 2017

Return-Path: <root@qq.com>

X-Original-To: root@westos.com

Delivered-To: root@westos.com

Date: Sun, 23 Apr 2017 04:30:45 -0400

To: root@westos.com

Subject: hello

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

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

From: root@qq.com (root)

Status: R

 

hello westos

 

& q

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

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

[root@mail-westos ~]# mail root@qq.com                      //服务端恢复邮件

Subject: hello

hello qq

.

EOT

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

Subject: hello

hello qq

.

EOT

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

 

 

[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]# mail                                    //客户端查看邮件

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

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

>N  1 root                  Sun Apr 23 04:35  21/728   "hello"

& 1

Message  1:

From root@westos.com  Sun Apr 23 04:35:13 2017

Return-Path: <root@westos.com>

X-Original-To: root@qq.com

Delivered-To: root@qq.com

Date: Sun, 23 Apr 2017 04:35:13 -0400

To: root@qq.com

Subject: hello

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

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

From: root@westos.com (root)

Status: R

 

hello qq

 

& q

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

 

 

在别的主机及上代收邮件(实际是操控实际收邮件的主机的服务器)

 

服务端(被代收的服主机):

 

[root@mail-westos ~]# yum install dovecot -y

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

[root@mail-westos ~]# id student

uid=1000(student) gid=1000(student) groups=1000(student),10(wheel)    //确定这台主机有student这个用户才可以。

[root@mail-westos ~]# passwd student                                          //mutt  要输入密码

Changing password for user student.

New password:

BAD PASSWORD: The password is shorter than 8 characters

Retype new password:

passwd: all authentication tokens updated successfully.

[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@foundation95 ~]# yum search mutt                   

Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-

      : manager

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

rhel7.0                                                  | 4.1 kB     00:00     

(1/2): rhel7.0/group_gz                                    | 134 kB   00:00     

(2/2): rhel7.0/primary_db                                  | 3.4 MB   00:00     

============================== N/S matched: mutt ===============================

mutt.x86_64 : A text mode mail user agent

mutter.i686 : Window and compositing manager based on Clutter

mutter.x86_64 : Window and compositing manager based on Clutter

 

  Name and summary matches only, use "search all" for everything.

[root@foundation95 ~]# yum install mutt.x86_64 -y                     //安装mutt服务

 

[root@foundation95 ~]# mutt -f pop://student@172.25.254.224

     进入之后按照提示输入“o”。然后输入student的密码,即可看到邮件。光标移动之后ENTER可看到邮件内容。

ctrl+c退出。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0 0