之前 提到了用 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