Почтовая фильтрация с procmail в системе постфикса/голубятни с виртуальными пользователями

Файл не сообщает операционной системе о своем формате файла, за одним исключением:

Если исполняемый файл начинается с так называемой shebang-строки, например

#! /usr/bin/perl

то в этой строке ядро Linux должно быть запущено с /usr/bin/perl (т.е. вместо выполнения этого файла он должен выполнить usr/bin/perl и привести этот файл в качестве аргумента). Это, конечно, работает только с теми форматами файлов, которые игнорируют (или понимают) такую шебанговую строку.

Кроме того, операционная система как таковая ничего не знает о типах файлов. Однако многие программы, которые позволяют открывать другие файлы, имеют свой собственный механизм принятия решения о том, какую программу использовать для открытия какого файла. Это может быть список внутри самой программы (Firefox, например, ведет такой список), или программа может делегировать его окружению рабочего стола (их несколько для Linux).

Обычно эти механизмы учитывают только имя файла, чтобы решить, какой тип файла; исключение составляют почтовые клиенты и веб-браузеры, где обычно тип файла явно задается сервером/установленным по почте.

Обычно механизм состоит из двух шагов:

  • Во-первых, по имени файла или предоставленной информации определите MIME-тип файла (MIME-тип - это стандартизированный, но расширяемый список типов файлов)
  • Во-вторых, по MIME-типу определите, какую программу нужно выполнить, обычно через своего рода реестр, поддерживаемый либо самой программой, либо окружением рабочего стола, для которого она была написана.
1
21.07.2014, 23:06
1 ответ

В вашем файле /etc/postfix/main.cf нигде не упоминается procmail. В этом и проблема, AFAIK.

В моем случае, у меня есть:

mailbox_command = procmail -a "$EXTENSION"

и мой конфигурационный файл procmail находится в ~пользователь/.procmailrc. Однако это настоящий пользователь на машине. Похоже, что вы используете виртуальный транспорт, и в этом случае я полагаю, что вы должны использовать что-то вроде:

virtual_transport = procmail
procmail_destination_recipient_limit = 1

(это касается всех пользователей, но ваши правила procmail могут с этим справиться, или вы можете использовать transport_maps с transport table). Полагаю, что вы можете более или менее копировать из Postfix + Maildrop Howto, заменяя maildrop на procmail.

В качестве альтернативы, интересно, можно ли использовать что-нибудь, основанное на:

virtual_transport = virtual
virtual_alias_maps = hash:/etc/postfix/virtual

/etc/postfix/virtual:
  paulo@mydomain.com procmail

/etc/aliases:
  procmail: "|/path/to/procmail ..."
3
27.01.2020, 23:28

Теги

Похожие вопросы