Есть задача: не принимать к отправке письма с определённым вложением в определённом направлении.
В общем случае, фильтрацию вложения по названию возможно сделать встроенным средством: mime_header_checks. Если мы правильно составим фильтр, то письмо с заданным вложением, в данном случае: $ANYSTRING-test.txt, не будет принято.
main.cf:
# main.cf
mime_header_checks = regexp:$config_directory/conf.d/mime_header_checks.regexp
# conf.d/mime_header_checks.regexp
/^\s*Content-(Disposition|Type).*name\s*=\s*"?(.+(-test)+\.(txt))"?\s*$/
REJECT Attachment type not allowed.
File "$2" has the unacceptable name
Это будет относиться ко всей почте, однако нам надо применить это правило к определённому направлению, то есть в сочетании с проверкой получателя. Но, насколько я прочёл, в postfix проверки выполняются последовательно: header_checks, body_checks, mime_header_checks; и во время проверки заголовка (smtpd_sender_restrictions) невозможно вызвать проверку mime_header, и наоборот.
Похожий пример рассматривается например здесь, в самом начале: http://www.sys-adm.org.ua/mail/postfix-faq.php . Отличие в том, что там задача сложнее, письмо необходимо отправить но вложение удалить. Для этого там используется внешний фильтр. В нашем случае внешний фильтр избыточен, и достаточно просто не принимать письмо к отправке.
Здесь автор использует класс ограничений аналогичный такому:
# main.cf
smtpd_restriction_classes = test_attach
test_attach =
check_recipient_access hash:$config_directory/conf.d/test_access.map
smtpd_sender_restrictions =
check_sender_access hash:$config_directory/conf.d/sender_access.map
В этой карте данный класс используется:
# conf.d/sender_access.map
testuser@domain1 test_attach
А это карта непосредственно самого класса.
# conf.d/test_access.map
domain2 reject # здесь, в используемом описании,
# автор передаёт письмо на обработку
# внешнему фильтру: FILTER altermime:
Если в описании класса (test_attach = ...) поставить проверку mime_header, то при использовании этого класса письмо не отправляется с сообщением: 4.3.5 Server configuration error, что, в общем, ожидаемо.
Возможно ли всё же как нибудь использовать сочетание проверки отправителя/назначения с проверкой mime_header, или только через внешние фильтры?