0

mailway webhook 的邮件数据处理

 2 years ago
source link: https://sskaje.me/2022/01/13/mailway-webhook-mail-data-process/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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的”-“去掉,转成二进制,删除记录。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK