老师布置下来一个作业,要求给他发一封匿名邮件。我之前对于smtp有一点大概的了解,并不是很深入,不管怎么说,直接动手就可以了。

一、带验证的smtp邮件发送

Smtp协议用作邮件的发送。其一开始并不具备发送方身份验证的功能,后来才加入这个功能。而我心里一开始以为带验证的邮件发送可能更简单一些,决定先从这个入手尝试(虽然后来被事实打脸)。

Smtp协议大致包含以下几个命令:

1.HELO $ServerName

此处serverName指的是发起会话者的主机名。所以乱填似乎并无造成什么影响。一个邮件发送的过程以这条命令起始。

返回值若为“250 OK”表明会话成功建立

2.AUTH LOGIN

输入该命令后返回的应是334+一串base64的编码。解码后可发现它说的是:username.此时需要输入自己的用户名的base64编码。

P.S.我在计算用户名的编码时,一开始采用$ echo “username” | base64的方式。之后在输入用户名密码时无论如何也不能成功。经仔细检查校验发现,这种方式计算出来的base64编码在最后是带着换行符的。同志们在这个问题上需多加谨慎。

成功的用户名输入会获得334+另一串base64编码,让你输入密码。在输入完密码之后服务器会对这个组合进行校验来确认是否登陆成功。然后给你反馈信息。

3.MAIL FROM:<$mail_from_address>

如字面意思,输入邮件发送方的邮箱地址。如果已经进行验证,可能会要求与之前登陆的邮箱相同。也可能不同,如果那样的话会在发出的邮件中显示“由XX代发”

4.RCPT TO:<$rcpt_to_address>

输入邮件接收方的邮箱地址(该邮箱地址必须在你连接到的服务器上)

5.DATA

输入邮件的内容。以一个占据一行的“.”结尾,表面输入完成。

6.QUIT

终止该会话。

Telnet 到mail服务器上,这时要注意smtp服务的端口

telnet mail.xx.com 25

连接上之后依次输入以上的命令,如果均未提示错误,在quit之后会显示邮件发送成功的提示。

二、匿名邮件的发送

前面提到过,匿名邮件的发送实际上更简单……

其实就是,去掉验证那一步,然后在mail from步骤当中输入一个类似master@example.com 这样不需要验证的邮箱就可以。我一开始以为的难度,实际上是对冒充他人邮箱的期望……当然我到现在也不是很清楚该怎么做才能完成。

毫无任何阻碍,你就给随便谁发出了一封匿名的邮件……

三、邮件格式需要注意的点

在收到这样一封邮件时,你可能会注意到,邮件的收件人,发件人,时间,主题等信息都是空缺的。因为这些信息都是需要在DATA命令当中以特定格式说明的。

From: master@example.com

To: winkar@163.com

Date: Mon, 25 Oct 2014 14:24:27 +0800

Subject: test

在邮件正文的开头加上这样的部分,就可以正常显示了。

下面是利用python 的smtplib和email 模块的一个例程。

  #coding=utf-8import smtplibfrom email.mime.text import MIMETextfr = "master@example.com.cn"to = "winkar@163.com"cl = smtplib.SMTP(host='mail.163.com',port=25)cl.set_debuglevel(1)cl.docmd("HELO server")cl.docmd("MAIL FROM:<%s>"% fr)cl.docmd("RCPT TO:<%s>"% to)msg = MIMEText(msg, _charset="utf-8")msg['From'] = frmsg['To'] = tomsg['Subject'] = "information_security"cl.docmd("DATA")cl.send(msg.as_string())cl.send(".\n")cl.quit()

smtp匿名邮件发送小记相关推荐

  1. 发送邮件(支持所有smtp协议邮件发送)

    1.所需包: javax.mail.jar maven : <!-- https://mvnrepository.com/artifact/javax.mail/mail --> < ...

  2. SMTP 协议邮件发送工具封装

    文章目录 1. 前言 1.1 说明 1.2 建议 1.3 源码 2. 发件人邮箱开通smtp 服务 2.1 为什么开通smtp 服务 2.2 开启服务的步骤 2.3 普通邮箱开启服务图文 3. 工具类 ...

  3. Windows命令实现匿名邮件发送

    在日常工具开发中,经常会有发送邮件的需求.在一些高级语言中,如Python,C#中,都有专门的邮件发送模块,如Python 中的 smtplib 模块.那么,一封邮件到底是如何发送到一个特定的邮箱呢? ...

  4. 基于Java的SMTP协议邮件发送模拟系统

    目录 1. 原理分析 2. 前端页面 3. 数据库设计 4. 后端数据处理 5. 参考文献 6. 注意事项 1. 原理分析 SMTP协议 SMTP(Simple Mail Transfer Proto ...

  5. smtp协议——邮件发送

    根据自己使用的邮件服务器,完成smtp协议的服务开启 给特定邮箱发送图文并茂的邮件,邮件正文包含的表格如下所示,显示的图片自己确定. 给特定邮箱发送邮件,邮件附件为"实验报告7 smtp协议 ...

  6. java 邮件客户端 smtp_java网络编程三:基于SMTP的邮件发送客户端

    1.SMTP简介 2.发送过程 3.源代码示例 package demo.net; import java.awt.BorderLayout; import java.awt.GridLayout; ...

  7. smtp outlook邮件发送非授权码模式

    1.起因:send fail SMTP AUTH extension not supported by server. 使用端口25 和587均失效出现此问题 首先前往outlook修改设置pop和I ...

  8. Javamail实现的匿名邮件,模拟邮件服务器发送行为

    Sender  ->  Sender's SMTP server  ->  Receiver's SMTP server -> Receiver 正常流程,SMTP是这样应用的,需要 ...

  9. php pear mail smtp 不验证,怎么在php中使用pear_smtp实现一个邮件发送功能

    怎么在php中使用pear_smtp实现一个邮件发送功能 发布时间:2020-12-22 16:24:35 来源:亿速云 阅读:76 作者:Leah 怎么在php中使用pear_smtp实现一个邮件发 ...

  10. SMTP协议及POP3协议-邮件发送和接收原理(转)

    本文转自https://blog.csdn.net/qq_15646957/article/details/52544099 感谢作者 一. 邮件开发涉及到的一些基本概念 1.1.邮件服务器和电子邮箱 ...

最新文章

  1. JAVA自学笔记22
  2. ubuntu ls命令
  3. Spring自动装配----注解装配----Spring自带的@Autowired注解
  4. 怎么让车辆gps定位失效_如何更有效地检测车辆gps定位器?
  5. MySQL运维实战 之 PHP访问MySQL你使用对了吗
  6. spring注解大全
  7. mysql企业版功能列表_大型企业数据库服务首选,AliSQL这几大企业级功能你了解几个?...
  8. angularjs compile和link
  9. CentOS安装QQ2012
  10. 聊聊传统行业产品经理与互联网产品经理的区别
  11. “假努力”与“假关心”
  12. python读取txt数据处理后.csv格式输出
  13. 一个JAVA学习者应该具备的素质
  14. python实现百度新闻爬取并存入数据库(二)
  15. Open3D Mesh 网格
  16. 邮箱,手机号,电话号,身份证,中文名称验证
  17. 408,你可敬的对手!
  18. idea翻译软件TKK网络连接超时
  19. Python解压缩ZIP格式
  20. 计算机硬盘更换图解,轻松更换电脑硬盘无需重装系统的方法

热门文章

  1. 网关、路由器、交换机
  2. 密码要包含大小写字母+数字+符号,提这个建议的人刚刚承认他错了
  3. 迷你助手世界隐私条款
  4. Sun Dec 31 19:00:00 CST 1899格式的字符串转Date
  5. Intent详解及其用法
  6. 戴德金之连续性和无理数的中文翻译
  7. 运算放大器 之 概述
  8. 管家婆辉煌Ⅱ TOP 突破系统每年只能做11次12次月结存限制
  9. Android应用的persistent属性
  10. ARP协议详解 ARP报文结构