Совет FAQ на http://www.sendmail.org/faq/section3#3.29 похоже, полагается на тот факт, что следующая запись в virtusertable:
@domain.com user+%1
вызовет $ 1 в конфигурации .procmailrc, например:
ENV_TO=$1
иметь значение «xyz», если полученное электронное письмо было для xyz@domain.com, и «abc» для abc@domain.com. (Просмотр журнала procmail, кажется, подтверждает это.)
Однако я бы хотел, чтобы $ 1 вместо этого имел значение «xyz@domain.com». Так я могу обрабатывать несколько доменных имен под одним и тем же пользователем.
Следующая конфигурация virtusertable / .procmailrc, похоже, подходит для этой цели:
виртуозный:
@domain1.com userA+%1\@domain1.com
@domain2.com userA+%1\@domain2.com
.procmailrc:
ENV_TO=$1
:0f
* ENV_TO ?? .
| formail -i "X-Envelope-To: $ENV_TO"
:0fE
| formail -i "X-Envelope-To: UNKNOWN"
:0:
* ^X-Envelope-To: xyz\\@domain1.com
$HOME/userA/domain1.com/mail/xyz
:0:
* ^X-Envelope-To: abc\\@domain2.com
$HOME/userA/domain2.com/mail/abc
Однако я бы хотел избежать появления двойных обратных косых черт в X-Envelope-To. Удаление [того, что кажется] обратной косой чертой в кавычках в virtusertable не удается, например:
@domain1.com userA+%1@domain1.com
@domain2.com userA+%1@domain2.com
кажется, вызывает "чрезмерную ошибку рекурсии".
У меня вопрос:
Как правильно указать at-sign в virtusertable, чтобы $ 1, поступающий в .procmailrc, содержал только «abc@domain1.com», а не «abc \ @ domain1.com»?
Или, если это невозможно, как мы можем удалить обратную косую черту внутри самой обработки .procmailrc, чтобы ENV_TO (в конечном итоге) был назначен «abc@domain1.com», а не «abc \ @ domain1.com»?
Вы делаете свой virtusertable следующим образом: @domain.com user+%1-domain.com
а затем вы создаете сценарий, который читает X-Envelope-To:
заголовок подготовлен из formail
который заменяет его правильным значением. Другими словами, вам нужна собственная версия formail
как раз для этой цели. Вы можете сделать это даже с вашей текущей настройкой, когда у вас будет сценарий, анализирующий X-Envelope-To:
заголовок и удалите обратную косую черту.