我需要实现一个智能邮件列表/中继(在Linux上)。想法是:
- 服务器接收到列表地址的电子邮件
- 它解析邮件,并确认它来自可信来源
- 它在本地数据库中查找收件人列表
- 它对收到的邮件进行一些小的处理,并将其发送到列表中
- 它将所有反弹消息返回给原始发件人
服务器已经安装了sendmail,但如果需要,我可以使用另一个MTA。
这听起来很简单,sendmail已经具备了数据库查找功能。然而,我不认为这是特别灵活的,我不想让sendmail独立访问我的数据库。
我最接近现有解决方案的是E-MailRelay,它看起来不错,但如果可以避免的话,我不想集成它的开销
我很感激在开始之前对我的B计划进行一次理智的检查,或者提出其他建议。我还没有找到任何有用的文档,Sendmail的书中似乎也没有任何相关内容
我想的是:
- 为sendmail实现SMTP传递代理,并让sendmail和DA在同一台服务器上运行,DA在某个未指定的端口上侦听(哪个?)
- Sendmail可能在连接到DA时充当SMTP客户端,我的DA将响应MAIL/RCPT/DATA命令
- DA处理收到的邮件,这些邮件要么是发送到邮件列表的消息,要么是反弹,或者可能是响应
- 然后,DA切换到客户端模式,连接到sendmail,并发出MAIL/RCT/DATA命令将响应返回给原始发件人
这有道理吗?谢谢
这很简单,尽管我没有使用sendmail传递代理——我只是在SMTP中做所有事情。服务器有两个IP地址,sendmail已经在IP#1上的端口25上侦听。
我写了一个SMTP代理,它在IP#2上的端口25上侦听。这运行一个SMTP服务器,该服务器接受传入邮件并重新写入它们。然后,它(作为客户端)连接到IP#1上的端口25,将重新编写的消息发送到sendmail。sendmail然后处理到重新写入的目的地地址的传输。这对原始邮件客户端是完全透明的。
不过,我不确定如果服务器只有一个IP地址,我会怎么做。