mailway webhook 的邮件数据处理


之前 提到了用 mailway 实现域名邮箱服务,用它 webhook 实现匿名邮箱服务,补充一点数据的细节。

1 webhook 给的邮件正文只是一个链接,链接是 hardcoded 了服务器地址,所以实际使用的时候如果不匹配,需要自己修正。

2 webhook 提供的邮件正文API,取到数据后需要自己 base64 decode

3 webhook 提及的认证细节,截至上一篇 blog 的时候,都是未实现的状态,所以只建议提供一个 127.0.0.1 的 api 服务。

4 webhook 传递的 subject 是按照 RFC 2047 编码了的,理论上 from/to 也是,但是我的场景没遇到,也没去看源码,所以没验证。使用的时候,php会需要使用函数 iconv_mime_decode

5 mailway 的数据库使用 maildb_db_path 配置,截至当前的 deb 包是没有带这个配置项的配置文件,需要自己手工配置,例如我配置的是

# more /etc/mailway/conf.d/maildb.yml 
maildb_db_path: /var/lib/mailway/maildb.db

6 mailway 的邮件文件存放在 /usr/local/lib/maildb,很不幸,截至当前又是写死的。我的做法是symlink到了 /var/lib/mailway/maildb,这样我都在 /var/lib/mailway 里管理就行。

7 邮件回收,maildb 服务没有提供接口。自己读maildb,自己设定规则,自己删除邮件文件和数据。

对于非配置的域名,虽然都会进maildb,但是邮件文件是不存的,可以直接打开 maildb 的 sqlite 文件,按域名删除。

select distinct domain from mails;

delete from mails where domain in ('xxx', 'yyy')

如果是在域名白名单里的,

但是maildb 的 uuid是二进制的,如果用起来不方便的话,可以用

curl http://127.0.0.1:8081/db/domain/{domain}/logs

按自己的规则,例如时间规则,查出 uuid,逐个删除文件。再到数据库里删记录,把uuid的”-“去掉,转成二进制,删除记录。


Leave a Reply

Your email address will not be published. Required fields are marked *