搭建一个本地 SMTP 服务器

由于 SMTP 服务器的开放端口和安全性问题,许多现代邮件服务器不再允许直接通过 Telnet 连接到标准的 25 端口发送邮件,尤其是未经认证的用户。因此,许多公共电子邮件服务商如 Gmail、Yahoo 等也禁用了这种方式,转而要求使用更安全的加密连接,如通过 SSL/TLS 连接发送邮件。

不过,如果你有权限使用某个 SMTP 服务器(比如你自己公司的邮件服务器或本地服务器),你可以联系你的邮件服务器管理员获取服务器的名称和端口号,确保你可以通过 Telnet 进行实验。

如果你想自己搭建一个本地 SMTP 服务器

你可以在本地机器上运行一个简单的 SMTP 服务器,用来进行 Telnet 测试。以下是一些常用工具和步骤:

1. 使用 Python 自带的 SMTP 服务器

如果你使用的是 Linux 或 macOS,甚至 Windows,并且安装了 Python,可以通过以下命令在本地启动一个简单的 SMTP 服务器:

bash 复制代码
python -m smtpd -c DebuggingServer -n localhost:1025

这会启动一个运行在本地 localhost 上的 SMTP 服务器,监听 1025 端口。

2. 连接到本地 SMTP 服务器

启动后,你可以通过以下 Telnet 命令连接到本地 SMTP 服务器:

bash 复制代码
telnet localhost 1025

连接成功后,你就可以按照之前的步骤发送邮件了。

请确保严格按照以下步骤来发送邮件:

完整的 SMTP 命令顺序:

  1. HELO 命令(服务器问候):

    bash 复制代码
    HELO mydomain.com
  2. MAIL FROM 命令(指定发件人):

    bash 复制代码
    MAIL FROM: <alice@mydomain.com>
  3. RCPT TO 命令(指定收件人):

    bash 复制代码
    RCPT TO: <bob@otherdomain.com>
  4. DATA 命令(准备发送邮件内容):

    bash 复制代码
    DATA
  5. 输入邮件内容

    在服务器提示 354 Enter message, end with "." on a line by itself 后,输入邮件正文,最后用一个单独的句号 . 结束邮件内容:

    bash 复制代码
    Subject: Test Email
    Hello,
    This is a test email sent via Telnet and Python SMTP server.
    .
  6. QUIT 命令(结束会话):

    bash 复制代码
    QUIT

示例流程:

bash 复制代码
telnet localhost 1025
220 uavris-Lenovo-Legion-Y7000P2020 Python SMTP proxy version 0.2
HELO mydomain.com
250 Hello mydomain.com, pleased to meet you
MAIL FROM: <alice@mydomain.com>
250 Sender OK
RCPT TO: <bob@otherdomain.com>
250 Recipient OK
DATA
354 Enter message, end with "." on a line by itself
Subject: Test Email
Hello,
This is a test email sent via Telnet and Python SMTP server.
.
250 Message accepted for delivery
QUIT
221 Goodbye

关键点:

  • MAIL FROM 之后一定要先用 RCPT TO 指定收件人,才能执行 DATA 命令。
相关推荐
qq_316411038 小时前
商用冷柜售后报修运维管理系统开发案例
运维
huainingning8 小时前
R4930-G7服务器(RAID-LSI-9560-LP-8i-4GB)网页方式做Raid方法
服务器
智码看视界8 小时前
Day59-阿里云ACK实战:生产级K8s集群部署与运维
运维·阿里云·kubernetes·k8s·日志监控·容器运维·阿里云ack
码视野10 小时前
基于 Vue3 + Element Plus 的【智慧新能源汽车充电桩运维调度与分时共享租赁系统】设计与实现(附完整源码与PRD)
运维·人工智能·汽车·vue3
qq_4260039610 小时前
【UI自动化测试】UI自动化报错解决方案
运维·ui·自动化
网安蟹佬霸10 小时前
WAF绕过技术实战:从规则检测到编码绕过全指南(2026最新版,附Payload集与自动化脚本)
运维·安全·网络安全·架构·自动化·网安
小杨不想秃头10 小时前
信息安全工程师教程第二章密码学
运维·服务器·密码学
I'mChloe10 小时前
WGCLOUD怎么监控多台服务器?从Server、Agent 部署到监控面板实战
运维·服务器
Android系统攻城狮11 小时前
Linux PipeWire深度解析之pw_init调用流程与实战(八十三)
linux·运维·服务器·音频进阶·pipewire音频进阶
国科安芯11 小时前
轨道供电韧性:ASP4644四通道降压架构在低轨卫星平台电源管理中的适用性分析
运维·网络·数据库·嵌入式硬件·架构·状态模式·低轨卫星星座