LINUX.ORG.RU
ФорумAdmin

Postfix+Fetchmail и письма с левых доменов

 ,


0

1

Всем доброго времени суток!

Подскажите, есть какая-то возможность принимать письма с левых доменов и отправлять их либо в /dev/null, либо на какой-то один ящик.

Сейчас в логе fetchmail скопилось достаточно много записей вида:

fetchmail: SMTP error: 450 4.1.8 <postmaster@<trash>.local>: Sender address rejected: Domain not found

В каждый новых проход fetchmail пытается их забрать и любезно передать postfix'у, но тот отказывается. Удалять с каждого ящика вручную не хотелось бы. Нашел в конфиге postfix две записи, которые как я понял и контролируют отсеивание подобных вещей:

reject_unknown_sender_domain
reject_unknown_recipient_domain

Но, есть ли возможность не разрешить прием всех таких писем, а удалить их или отправить на какой-то левый ящик?

да есть. Правила проверяются строчка за строчкой. Те если ты уберешь reject_unknown_sender_domain или же напишешь новое правило раньше него.То будет работать. тебе надо прописать раньше него новое правило

smtpd_sender_restrictions =
...
hash:/etc/postfix/sender_access
..
...
reject_unknown_sender_domain
/etc/postfix/sender_access
test.local PERMIT
# postmap /etc/postfix/sender_access
# /etc/init.d/postfix reload
constin ★★★★ ()
Последнее исправление: constin (всего исправлений: 2)
Ответ на: комментарий от constin

Не выйдет так указать, у меня в конфиге уже есть запись для smtpd_sender_restrictions. И, как я понимаю в этом случае пользователи получат эти самые письма. Никак нельзя отправить их куда-то.. в другую почту? Притом не по домену, а все, которые помечаются Sender address rejected: Domain not found.

smtpd_sender_restrictions =
    check_sender_access hash:/etc/postfix/restricted_senders
    reject_unlisted_sender
    permit_mynetworks
    reject_unknown_sender_domain
    reject_non_fqdn_sender
    permit_sasl_authenticated
    reject_invalid_hostname
    reject_unknown_hostname
    reject_non_fqdn_hostname
hanharr ()
Ответ на: комментарий от hanharr

ну допиши правила в hash:/etc/postfix/restricted_senders

Однако я не понимаю задачи. Эти письма не нужно получать? Или нужно сделать вид , что получил и затем удалить?

constin ★★★★ ()
Ответ на: комментарий от hanharr

ну все равно, надо сначала разрешить это принимать. а потом отфорвардить на алиас devnull, который

devnull: /dev/null

constin ★★★★ ()
Ответ на: комментарий от constin

Подскажите, в общем проблем с тем, чтобы забрать такие письма не возникло, только один момент.

main.cf

smtpd_recipient_restrictions =
 ...
 check_sender_access hash:/etc/postfix/not_our_domain_as_sender
 ...
 permit

В этом самом файле было:

siz37.lan 554 Do not use my domain in your envelope sender

Эту строку нужно оставлять? Или просто взамен указать список доменов, которые я хочу «пустить».

hanharr ()
Ответ на: комментарий от hanharr

Эту строку нужно оставлять?

Я же объяснял логику, лучше ее один раз понять. smtpd_recipient_restrictions ---> дальше пошли перечисления того, что нам проверять и в каком порядке. Если по пути проверки встретилось правило «безоговорочно пропускаем» , то дальнейшие правила для этого письма в рестрикшене smtpd_recipient_restrictions не обрабатываются.

Таким образом для этого кейса check_sender_access нужно разместить повыше, до проверок на валидность домена.

В самом файле действует такое же правило(построчная проверка).

siz37.lan 554 Do not use my domain in your envelope sender

означает , что мы не пропускаем siz37.lan с режектом «554 Do not use my domain in your envelope sender»

Если домен siz37.lan это тот домен, о котором идет речь в вашем посте, то надо эту строчку изменить на

siz37.lan PERMIT

Если речь идет о другом/других доменах, то надо добавить строчки. После этого запустить команду postmap /etc/postfix/not_our_domain_as_sender, чтобы постфик обновил хеш этого файла.

Этим вы добьетесь того, чтобы postfix принимал письма от этого/этих доменов. След шаг - заставить его форвардить их в /dev/null

constin ★★★★ ()
Ответ на: комментарий от constin

С этим я разобрался практическим методом. Просто, меня смутило, что для siz37.lan стояло не РАЗРЕШИТЬ/ЗАПРЕТИТЬ, а целое сообщение выдать.

А вот со вторым шагом затык. Пока получилось либо отправить копию (но нафиг она нужна в данном случае), либо форвардить письмо, которое ты отправляешь на указанный домент, а не получаешь от него.

hanharr ()
Ответ на: комментарий от hanharr

А вот со вторым шагом затык. Пока получилось либо отправить копию (но нафиг она нужна в данном случае), либо форвардить письмо, которое ты отправляешь на указанный домент, а не получаешь от него.

Да, этот момент я пропустил. Навскидку postfix не сможет сам решить эту проблему (поправьте меня кто-нибудь, если я не прав, но думаю, что я прав). Но можно схитрить и сделать глобальное sieve правило, типа:

если отправитель входящего письмо такого-то домена, то форвардим письмо на devnull@domain.com , а в оригинальный ящик получателя не складываем. ну а все что пришло на devnull@domain.com уже перенаправляем в печку.

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

constin ★★★★ ()
Ответ на: комментарий от constin

Можно как-то иначе избавляться от таких писем? По идее, можно fetchmail'у сказать один проход сделать и отправить письма на другой сервер, где разрешить принять всё. Но, можно потерять какое-нибудь важное письмо, даже если ночью проделать такую операцию. Взять скрипт, который потом пройдет по каталогам и удалит файлики писем с определенным полем выглядит как костыль... Что-то в голову больше ничего не идёт.

hanharr ()
Ответ на: комментарий от hanharr

Да нет проблемы избавляться от таких писем. И это не левые домены.

Я вначале подумал, что у вас там ходят какие-то локальные почты. И по какой-то очень странной причине, отправителям надо показать, что вы письмо получили, но само письмо уничтожить. Странный кейс, но всякое бывает.

Но то, о чем вы пишите, совсем другое. Есть там где-то почтовик с которого вы зачем-то снимаете почту fetchmail'ом, как делала в шестидесятых годах моя бабушка ( ну не суть) У этого почтовика есть какие-то системные локальные уведомления, которые зачем-то попадают к вам на fetchmail. А они чем-то вам мешают разве? Ну, допустим, мешают, надо просто их убрать на почтовике, а не городить этот огород;)

constin ★★★★ ()
Ответ на: комментарий от constin

Этот почтовик яндекс) Таких ящиков ~50. Где-то одно письмо, где два, где-то двадцать. Просто каждый раз fetchmail тратит время на то, чтобы попытаться забрать эти письма и захотелось чистоты. Руками можно убрать, но придётся обойти (и обходить в будущем). Поэтому если есть возможность минимизировать участие человека, то почему бы и нет.

hanharr ()
Ответ на: комментарий от hanharr

ну чистый почтовый сервыер и сервер , которому почту приносит fetchmail это не одинаковые штуки по части обработки потока и правил.

Откуда на вашем yandex это письмо?

fetchmail: SMTP error: 450 4.1.8 <postmaster@<trash>.local>: Sender address rejected: Domain not found

Или вы yandex исходящие письма тоже отдаете?

constin ★★★★ ()
Ответ на: комментарий от hanharr

Да, отдаём письма на яндекс.

Напрямую? Ну вот значит postmaster@имя_вашего_почтовика.local отправляет какую-то хрень допустим на root@имя_вашего_почтовика.local. Ваш постфикс , например, пересылает, это все на yandex, yandex говорит, что идите в жопу в вашим local. О чем пишет в логах fetchmail. Вопрос зачем ваш почтовик отсылает эти письма на yandex? и тд и тп. те нужно в эту сторону смотреть, раз уж так хочется решить эту «проблему»

constin ★★★★ ()
Последнее исправление: constin (всего исправлений: 1)
Ответ на: комментарий от constin

Как реальный пример:

Менеджер отправляет письмо на gusarov@cniim.com. С виду ничего страшного. Но, в ответ приходит сообщение о статусе доставки от postmaster@cniim.local и это письмо postfix уже отказывается забирать.

hanharr ()
Ответ на: комментарий от hanharr

значит имя почтовой системы cniim.local это некорректно. Но если уж оно такое, что пропишите cniim.local в mydestination, тогда он будет принимать эти письма и отдавать манагеру. Ведь манагер должен иметь возхможность получать аутлупы, иначе как он узнает, что с его письмом были проблемы?

constin ★★★★ ()
Ответ на: комментарий от constin

Что-то полистав один ящик проблем там не было, одни «успешно доставлено». Все-таки, есть возможность как-то отсеивать письма, которые помечаются как «domain not found»? А то узнать это дело принципа теперь. :)

hanharr ()
Ответ на: комментарий от constin

Я имею ввиду, чтобы fetchmail не пытался в следующий раз опять их впихнуть postfix'у.

hanharr ()
Ответ на: комментарий от constin

Но, при этом не хотелось бы отдавать эти письма менеджерам, а форвардить, например, себе.

Вообще, postfix умеет обрабатывать письма в зависимости от сообщения, т.е. вот он не хочет забирать пачку писем и не руками прописывать разрешения для каждого, а чтобы он автоматически их все форвардил (ну, как пример форвардил).

hanharr ()
Ответ на: комментарий от constin

Судя по всему один из вариантов - это использовать header_checks.

hanharr ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.