smtp4dev 配置攻略

lmy

发布于85天前
1

https://appstore.lazycat.cloud/#/shop/detail/cloud.lazycat.app.smtp4dev


**smtp4dev** 是一款专为开发测试设计的假邮件服务器——接收所有发来的邮件但从不真正投递,同时提供 Web 界面查看收件箱。部署在懒猫微服上,可用于本地开发环境的邮件发送调试。

---

## 1. 三个协议分别干什么

- **SMTP**:发信,把邮件投递到 smtp4dev
- **IMAP**:收信,在客户端读取服务器上的邮件,支持多端同步
- **POP3**:收信,偏下载式读取

---

## 2. 端口转发配置(重点)

以域名 `smtp4dev.xxx.heiyu.space` 为例:

| 协议 | 对外端口 | 服务内端口 |
|------|----------|------------|
| SMTP | 2525     | 25         |
| IMAP | 1143     | 143        |
| POP3 | 1110     | 110        |


> **加密建议**:先全部使用无加密 / None,不要开 SSL/TLS,也不要 STARTTLS。

然后我们通过懒猫端口转发助手把端口转发出来


https://appstore.lazycat.cloud/#/shop/detail/cloud.lazycat.app.forward


![image.png](https://dl.playground.lazycat.cloud/guidelines/976/9355d9f3-7843-4975-9afa-a509e3be4e02.png "image.png")

---



## 4. 验证代码(用 ssh 验证运行,记得吧 xxx 的域名改成自己的域名)

### A. SMTP 发信验证

```python
import smtplib
from email.message import EmailMessage

host = 'smtp4dev.xxx.heiyu.space'
port = 2525

msg = EmailMessage()
msg['From']    = 'verify@openclaw.local'
msg['To']      = 'inbox@local.dev'
msg['Subject'] = 'SMTP 验证邮件'
msg.set_content('这是一封 SMTP 验证邮件')

with smtplib.SMTP(host, port, timeout=15) as s:
    s.ehlo_or_helo_if_needed()
    s.send_message(msg)
    print('SMTP_OK')
```

![image.png](https://dl.playground.lazycat.cloud/guidelines/976/83ba7fa7-943e-4bd2-96b0-3e0c9bb413b4.png "image.png")
进应用可以看到收到了邮件

![image.png](https://dl.playground.lazycat.cloud/guidelines/976/c80f31af-2ba6-4be8-a44e-df36376657ca.png "image.png")
### B. IMAP 读取验证

```python
import imaplib

host = 'smtp4dev.xxx.heiyu.space'

m = imaplib.IMAP4(host, 1143)
print('LOGIN:',      m.login('test', 'test123'))
print('SELECT:',     m.select('INBOX'))
print('SEARCH ALL:', m.search(None, 'ALL'))
m.logout()
print('IMAP_OK')
```
可以看到已经读到了邮件

![image.png](https://dl.playground.lazycat.cloud/guidelines/976/dcc52e69-df12-4d54-a802-cce5e517809f.png "image.png")

### C. POP3 读取验证

```python
import poplib

host = 'smtp4dev.xxx.heiyu.space'

p = poplib.POP3(host, 1110, timeout=10)
print('WELCOME:', p.getwelcome().decode())
print('USER:',    p.user('test').decode())
print('PASS:',    p.pass_('test123').decode())
print('STAT:',    p.stat())   # → (邮件数, 总大小)
print('QUIT:',    p.quit().decode())
print('POP3_OK')
```
读到了对应内容

![image.png](https://dl.playground.lazycat.cloud/guidelines/976/028cf081-236b-42d0-a79d-c5a18708cd24.png "image.png")



## 6. 常见坑

- **主机名别带协议前缀**:只填 `smtp4dev.xxx.heiyu.space`,不要写 `https://...`
- **端口别填错**:IMAP 是 `1143`,POP3 是 `1110`,不是标准的 143 / 110
- **不要开 SSL/TLS**:明文端口开了加密会导致连不上或 `broken pipe`
- **连接超时**:检查懒猫微服端口转发规则是否已保存生效,容器是否正常运行

评论

0

暂无评论

说点什么呢~
收藏
0
0
0