使用SMTP服务器/客户端实现智能中继

时间:2014-10-23 15:41:44

标签: smtp sendmail emailrelay

我需要实现智能邮件列表/中继(在Linux上)。这个想法是:

  1. 服务器接收电子邮件到列表地址
  2. 它解析邮件,并确认邮件来自可靠来源
  3. 查找本地数据库中的收件人列表
  4. 对收到的邮件进行一些小处理,并将其发送到列表
  5. 将任何退回邮件返回给原始发件人
  6. 服务器已安装sendmail,但如有必要,我可以使用其他MTA。

    这听起来很简单,sendmail已经拥有数据库查找功能。但是,我认为这不是特别灵活,我不想让sendmail独立访问我的数据库。

    我最接近现有解决方案的是E-MailRelay,它看起来不错,但如果我可以避免它,我不想要集成它的开销。

    我很欣赏在启动它之前对我的B计划进行健全性检查,或者其他建议。我没有找到任何有用的文档,而且Sendmail书中似乎没有任何相关内容。

    我在想的是:

    1. 为sendmail实施SMTP传递代理,让sendmail和DA在同一台服务器上运行,DA监听一些未指定的端口(哪个?)
    2. 当连接到DA时,Sendmail可能充当SMTP客户端,我的DA将响应MAIL / RCPT / DATA命令
    3. DA处理收到的邮件,邮件可以是邮件列表中的邮件,也可以是退回邮件,或者可能是回复邮件
    4. DA然后切换到客户端模式,连接到sendmail,并发出MAIL / RCT / DATA命令以将响应返回给原始发件人
    5. 这有意义吗?感谢。

1 个答案:

答案 0 :(得分:0)

事实证明这很简单,虽然我没有使用sendmail传送代理 - 我只是在SMTP中进行了覆盖。服务器有两个IP地址,sendmail已经在IP#1上的端口25上侦听。

我写了一个SMTP代理,它侦听IP#2上的端口25。这将运行SMTP服务器,该服务器接受传入的消息并重写它们。然后它(作为客户端)连接到IP#1上的端口25,将重写的消息发送到sendmail。然后sendmail处理到重写目标地址的传输。这对原始邮件客户端都是透明的。

如果服务器只有一个IP地址,不知道我该怎么做。