sendmail lda参数用于完整收件人地址

时间:2013-12-16 23:55:25

标签: sendmail procmail dovecot sieve-language

使用此:

define('LOCAL_MAILER_ARGS', 'procmail -t -Yo -a $h -d $u')

在我的sendmail中,mc给出了一个procmail LOGNAME,如

user

而不是

user@domain.com
使用

define('LOCAL_MAILER_ARGS', 'procmail -t -Yo -a $h -d $u@$h')
然后

给出

user@localhostname

我的问题是,我们的电子邮件用户的格式为'user@domain.tld'而非'用户' - 因此procmail无法找到例如只有用户地址部分'user'的邮件目录。 如何从sendmails lda call中为procmail提供完整的收件人地址?

编辑:

我会尝试更清楚,看看原因。

我的'虚拟'收件人是a)没有系统用户,并且他们的地址中有不同的域,都使用use_cw_file功能设置。本地邮件程序是procmail和dovecot(+ sieve),它最终也处理虚拟用户。因为dovecot除了要处理例如用户之外还在命名域。 admin@domain1.com和admin@domain2.com在同一台主机上。

所以我需要sendmail将完整地址发送到lda(堆栈)(procmail - > sieve - > dovecot)。

2 个答案:

答案 0 :(得分:1)

Sendmail:虚拟域的procmail交付

您可以选择带有prcoamil脚本的procmail邮件程序作为mailertable中的参数(procmail作为本地邮件程序是一个不同的野兽)。

mailertable file:

# deliver messages to domain.tld 
# using etc/procmailrcs/domain.tld.rc procmail script
domain.tld  procmail:/etc/procmailrcs/domain.tld.rc

访问(表)文件:

to:domain.tls  RELAY

评论:

  1. procmail以特殊方式处理/ etc / procmailrcs中的脚本(参见man procmail
  2. mailertable不咨询本地电子邮件域,因此需要访问表条目才能从任何地方接收到域的邮件。
    以root身份使用echo '$=w' | sendmail -bt获取本地电子邮件域列表
  3. 您可以使用virtusertable与_VIRTUSER_STOP_ONE_LEVEL_RECURSION_列出域中的有效地址并拒绝剩余
  4. 默认情况下,每个域中的每个收件人都会执行一次scipt

答案 1 :(得分:0)

根据定义,

$LOGNAME是本地用户名。我认为没有办法覆盖这个(或者应该有一个)。