0

使用这个:

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 无法找到例如只有用户地址部分“用户”的邮件目录。如何从 sendmails lda 呼叫中提供 procmail 完整的收件人地址?

编辑:

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

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

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

4

2 回答 2

1

Sendmail:虚拟域的 procmail 传递

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

邮寄表格文件:

# 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. 您可以使用带有 _VIRTUSER_STOP_ONE_LEVEL_RECURSION_ 的 virtusertable 来列出域中的有效地址并拒绝剩余
  4. 默认情况下,每个域中的每个收件人都会执行一次 scipt
于 2013-12-17T17:28:50.307 回答
0

$LOGNAME根据定义,是本地用户名。我不认为有一种方法可以覆盖它(或者应该有一种方法)。

于 2013-12-17T15:46:47.480 回答