使用sendmail只有非系统用户

我需要使用sendmail没有任何系统用户。

在我的configuration中唯一存在的问题是FEATURE(virtusertable)需要RHS中的最终系统用户,像我这样的virtusertable:

 @domain.tld [email protected] [email protected] systemuser 

问题是,没有这样的系统用户,我想所有的邮件到@ domain.tld交付给我的lda(procmail,然后dovecot-lda),这是能够处理完整的电子邮件地址作为用户。

我已经尝试过

 define(`_VIRTUSER_STOP_ONE_LEVEL_RECURSION_', `true')dnl define(`_NEED_MACRO_MAP_',`1')dnl 

但是这也没有帮助。

我们已经有一个丑陋的解决方法,正在读取virtusertable的procmail脚本,但我们希望通过sendmail来处理这个问题,这样任何在lda中没有RHS和/或用户的发送的电子邮件都将被反弹。 另外使用dovecot-lda是sendmail中的直接lda在我们的设置中也是没有select的。 🙁

任何帮助,欢迎!

看一下Sendmail常见问题解答3.29 – “如果在虚拟域中有多个用户转到单个邮箱时,如何添加指定实际收件人的标题?

恕我直言,它可能很容易适应提供你想要的 – 它提供了所有需要的钩子。

顺便说一句,您可以使用“@ domain.tld”virtusertable项来selecterror邮件。 它将允许您拒绝虚拟用户未列出的虚拟用户的消息。

 @domain.tld error:nouser No such user here [email protected] systemuser+%1 [email protected] systemuser+%1 

您也可以参考https://www.sendmail.com/sm/open_source/tips/virtual_hosting/

我最终通过两种方式解决了这个问题:

a)修补libsm/mbdb.csendmail/recipient.c以对dovecot用户表进行附加查找。 要做到这一点,需要一个LOCAL_RULE_0的小调整。

b)Andrzej在带有mailertable和访问文件的解决scheme中提供了一个类似的问题。 遵循这个想法,我发现了一个更简单的解决scheme,以满足我们所需

的virtusertable:

 @domain.tld user_domain_tld [email protected] user_another_tld 

别名:

 user_domain_tld: "|/bin/procmail -a [email protected]" user_another_tld: "|/bin/procmail -a [email protected]" 

解决schemea)很好,因为它改变了virtusertable中接受的语法,并且必须在时间上只检查一个文件,解决schemeb)因为实现它而容易的方式获胜,这另外更加兼容将来发布的sendmail。 毕竟工作之后,我用解决schemea),但是我会在圣诞节之后把它改成解决schemeb)