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退出。
- stmp协议以及邮件的发送
- 邮件发送协议 stmp
- JavaMail stmp协议 发送邮件例子
- 【Java网络】STMP邮件协议 发送客户端
- Java 采用stmp协议发送邮件
- 使用ActionMailer 的 STMP方式发送邮件
- stmp 邮件发送
- 使用stmp发送邮件
- php stmp邮件发送
- c++使用stmp协议发送邮件(163的邮箱,TTL非SSL)
- 邮件是怎么发送和接收的(STMP和POP3/IMAP协议)
- stmp邮件协议讲解
- java实现126邮箱邮件发送,使用stmp协议
- Python学习笔记 --- 利用STMP协议发送邮件
- Java利用stmp协议实现简单邮件发送功能
- 一个stmp发送邮件的例子:ssl方式
- java STMP协议群发邮件时有无效地址导致发送邮件失败
- server 2003 stmp服务器简单配置 以及.net 下发送邮件
- Java8之lambda表达式
- sort命令
- 修改页面滚动条样式CSS代码!(待修改兼容性)
- 分书问题(搜索)
- LintCode 38 搜索二维矩阵 II
- stmp协议以及邮件的发送
- 1649
- ULUA的简洁用法(二)
- Lucene教程--Analyzer分析器详解
- js判断鼠标移入的方向并触发事件
- Golang 学习之路四:类型
- 转:kafka数据可靠性深度解读
- InitInstance中创建CWnd派生的窗口对象,内存泄漏
- 第十周:( Sicily1091) Maximum Sum(c++)