Проверка отправителя

На доскональное знание данной темы, не может претендовать, пожалуй ни один спец, из ныне живущих на земле. ;-)
Так поможем друг другу.

Модераторы: Trinity admin`s, Free-lance moderator`s

Аватара пользователя
corvax
free-lance moderator
Сообщения: 877
Зарегистрирован: 06 авг 2004, 17:21
Откуда: Kiev, Ukraine
Контактная информация:

Сообщение corvax » 02 авг 2007, 13:57

Stranger03 писал(а):
corvax писал(а):на сколько я понял, у вас Fedora, Sendmail, письма из вашей сети приходят с локальными для вашего sendmail доменами в адресе отправителя и несуществующими mailbox'ами в этом же адресе отправителя?
Это будет работать только в том случае, если в адресе будет тот же домен. Если поставить адрес типа вася@ya.ru,
угу. только по условиям задачи у нас сетка не имеет шлюза во внешний мир. следовательно, в адресах могут быть только домены, локальные для единственного почтового сервера. по крайней мере я именно так понял условия задачи
Stranger03 писал(а):то такая проверка уже не сработает (это написано в первом посте кстати). В этом лучае почтовику надо совсем запретить обработку любых доменов, кроме mail.loc
--
/corvax

Аватара пользователя
corvax
free-lance moderator
Сообщения: 877
Зарегистрирован: 06 авг 2004, 17:21
Откуда: Kiev, Ukraine
Контактная информация:

Сообщение corvax » 02 авг 2007, 13:59

mitnik писал(а):Спасибо за ответ, вот так вставил в конфиг. Надеюсь в нужном месте ))
не нужно лазить руками в sendmail.cf

тот фрагмент нужно вставлять в конец sendmail.mc
mitnik писал(а):при попытке отправки

[root@service spamilter]# telnet 172.16.1.11 25
Trying 172.16.1.11...
Connected to mail.loc (172.16.1.11).
Escape character is '^]'.
220 localhost.localdomain ESMTP Sendmail 8.13.5/8.13.5; Thu, 2 Aug 2007 11:44:29 +0300
helo mail.loc
250 localhost.localdomain Hello mail.loc [172.16.1.11] (may be forged), pleased to meet you
mail from: vasya@mail.loc
554 5.3.0 rewrite: map user not found

Хотя юзер есть.
в данном случае user - это map для проверки существования локальных пользователей

вечером посмотрю в потроха 8.13.5, может там проверка существования локальных пользователей по-другому проводится
--
/corvax

mitnik
member
Сообщения: 24
Зарегистрирован: 27 апр 2006, 13:57

Сообщение mitnik » 02 авг 2007, 14:45

Stranger03 писал(а):
corvax писал(а):на сколько я понял, у вас Fedora, Sendmail, письма из вашей сети приходят с локальными для вашего sendmail доменами в адресе отправителя и несуществующими mailbox'ами в этом же адресе отправителя?
Это будет работать только в том случае, если в адресе будет тот же домен. Если поставить адрес типа вася@ya.ru, то такая проверка уже не сработает (это написано в первом посте кстати). В этом лучае почтовику надо совсем запретить обработку любых доменов, кроме mail.loc
Да я согласен, пусть обрабатываются письма только с этого домена.
Меня это устроит. Но проверка адреса отправителя просто необходима )). Нет необходимасти в грейлистах и прочих наворотах. Локальная почта, без инета, просто чтоб сервер пропускал письма с реальными адресатами и отправителями которы существуют на самом почтовике.

Аватара пользователя
corvax
free-lance moderator
Сообщения: 877
Зарегистрирован: 06 авг 2004, 17:21
Откуда: Kiev, Ukraine
Контактная информация:

Сообщение corvax » 02 авг 2007, 16:02

mitnik писал(а):при попытке отправки

[root@service spamilter]# telnet 172.16.1.11 25
Trying 172.16.1.11...
Connected to mail.loc (172.16.1.11).
Escape character is '^]'.
220 localhost.localdomain ESMTP Sendmail 8.13.5/8.13.5; Thu, 2 Aug 2007 11:44:29 +0300
helo mail.loc
250 localhost.localdomain Hello mail.loc [172.16.1.11] (may be forged), pleased to meet you
mail from: vasya@mail.loc
554 5.3.0 rewrite: map user not found

Хотя юзер есть.
гм... оказалось, что user map user создается только при использовании LUSER_RELAY (память подвела)

тогда нужно в sendmail.mc вставить фрагмент

Код: Выделить всё

LOCAL_CONFIG

Kuser user -m -a<>
перед

Код: Выделить всё

LOCAL_RULESETS

SLocal_check_mail

R $+                          $: $1 $| $>Parse0 $>3 $1

R $+ $| $+ < @ $+. > $*         $: $1 $| $2 < @ $3 > $4
R $+ $| $+ < @ $=w > $*         $: $1 $| $2 < @ $3 > $4 $| $(user $2 $: ? $)
R $+ $| $+ < @ $=w > $* $| ?    $: $1 $| $2 < @ $3 > $4 $| $(aliases $2 $: ? $)
R $+ $| $+ < @ $=w > $* $| ?    $: $1 $| $2 < @ $3 > $4 $| $(virtuser $2@$3 $: ? $)
R $+ $| $+ < @ $=w > $* $| ?    $: $1 $| $2 < @ $3 > $4 $| $(virtuser @$3 $: ? $)
R $+ $| $+ $| ?                 $#error $: 554 5.1.7 Sender unknown
R $+ $| $*                      $: $1
и пересобрать sendmail.cf
--
/corvax

mitnik
member
Сообщения: 24
Зарегистрирован: 27 апр 2006, 13:57

Сообщение mitnik » 02 авг 2007, 18:34

Почти работает. Но.

[root@service mail]# telnet 172.16.1.11 25
Trying 172.16.1.11...
Connected to mail.vit (172.16.1.11).
Escape character is '^]'.
220 localhost.localdomain ESMTP Sendmail 8.13.5/8.13.5; Thu, 2 Aug 2007 17:30:14 +0300
helo mail.loc
250 localhost.localdomain Hello mail.loc [172.16.1.11] (may be forged), pleased to meet you
mail from: geeeeeeeeeee@mail.loc
554 5.1.7 Sender unknown
mail from: a@ya.ru
250 2.1.0 a@ya.ru... Sender ok
^]
telnet> quit
Connection closed.

с локальными адресами ок.
Но левые проходят.


вот кусок sendmail.mc

Код: Выделить всё

MAILER(smtp)dnl
MAILER(procmail)dnl
LOCAL_CONFIG
Kuser user -m -a<>
LOCAL_RULESETS
SLocal_check_mail
R $+                            $: $1 $| $>Parse0 $>3 $1
R $+ $| $+ < @ $+. > $*         $: $1 $| $2 < @ $3 > $4
R $+ $| $+ < @ $=w > $*         $: $1 $| $2 < @ $3 > $4 $| $(user $2 $: ? $)
R $+ $| $+ < @ $=w > $* $| ?    $: $1 $| $2 < @ $3 > $4 $| $(aliases $2 $: ? $)
R $+ $| $+ < @ $=w > $* $| ?    $: $1 $| $2 < @ $3 > $4 $| $(virtuser $2@$3 $: ? $)
R $+ $| $+ < @ $=w > $* $| ?    $: $1 $| $2 < @ $3 > $4 $| $(virtuser @$3 $: ? $)
R $+ $| $+ $| ?                 $#error $: 554 5.1.7 Sender unknown
R $+ $| $*                      $: $1

Аватара пользователя
corvax
free-lance moderator
Сообщения: 877
Зарегистрирован: 06 авг 2004, 17:21
Откуда: Kiev, Ukraine
Контактная информация:

Сообщение corvax » 02 авг 2007, 20:10

mitnik писал(а):Почти работает. Но.

[root@service mail]# telnet 172.16.1.11 25
Trying 172.16.1.11...
Connected to mail.vit (172.16.1.11).
Escape character is '^]'.
220 localhost.localdomain ESMTP Sendmail 8.13.5/8.13.5; Thu, 2 Aug 2007 17:30:14 +0300
helo mail.loc
250 localhost.localdomain Hello mail.loc [172.16.1.11] (may be forged), pleased to meet you
mail from: geeeeeeeeeee@mail.loc
554 5.1.7 Sender unknown
mail from: a@ya.ru
250 2.1.0 a@ya.ru... Sender ok
^]
telnet> quit
Connection closed.

с локальными адресами ок.
Но левые проходят.
так тут нужна уже не проверка существования отправителя из локального домена, а проверка принадлежности домена отправителя к списку локальных доменов. это несколько другой фильтр, хотя его можно легко совместить в вышеприведенным моим фильтром
mitnik писал(а):вот кусок sendmail.mc

Код: Выделить всё

MAILER(smtp)dnl
MAILER(procmail)dnl
LOCAL_CONFIG
Kuser user -m -a<>
LOCAL_RULESETS
SLocal_check_mail
R $+                            $: $1 $| $>Parse0 $>3 $1
R $+ $| $+ < @ $+. > $*         $: $1 $| $2 < @ $3 > $4
можно вот такой код попробовать сюда вставить:

Код: Выделить всё

R $+ $| $+ < @ $+ > $*         $: $1 $| $2 < @ $3 > $4 $| ?
R $+ $| $+ < @ $=w > $* $| ?   $: $1 $| $2 < @ $3 > $4
R $+ $| $+ < @ $+ > $* $| ?    $#error $: 554 5.1.7 Sender domain unknown
опять же, писал прямо сюда, в sendmail -bt -d21.12 я его не тестил (нЕгде)
так что нужно этот фрагмент тестить самостоятельно
mitnik писал(а):

Код: Выделить всё

R $+ $| $+ < @ $=w > $*         $: $1 $| $2 < @ $3 > $4 $| $(user $2 $: ? $)
R $+ $| $+ < @ $=w > $* $| ?    $: $1 $| $2 < @ $3 > $4 $| $(aliases $2 $: ? $)
R $+ $| $+ < @ $=w > $* $| ?    $: $1 $| $2 < @ $3 > $4 $| $(virtuser $2@$3 $: ? $)
R $+ $| $+ < @ $=w > $* $| ?    $: $1 $| $2 < @ $3 > $4 $| $(virtuser @$3 $: ? $)
R $+ $| $+ $| ?                 $#error $: 554 5.1.7 Sender unknown
R $+ $| $*                      $: $1
я уж и забыл, когда такие фильтры для sendmail'а рисовал
скоро sendmail умрет сам собой, т. к. не останется людей, способных его гибко настроить (я не имею ввиду пару-тройку опций в sendmail.mc и обвязку из хрЕновой тучи милтеров)
--
/corvax

mitnik
member
Сообщения: 24
Зарегистрирован: 27 апр 2006, 13:57

Сообщение mitnik » 03 авг 2007, 09:51

Большущее спасибо. Как говорится респект и уважуха.

[root@service mail]# telnet 172.16.1.11 25
Trying 172.16.1.11...
Connected to mail.loc (172.16.1.11).
Escape character is '^]'.
220 localhost.localdomain ESMTP Sendmail 8.13.5/8.13.5; Fri, 3 Aug 2007 08:44:47 +0300
helo mail.loc
250 localhost.localdomain Hello mail.loc [172.16.1.11] (may be forged), pleased to meet you
mail from: vasiiiiliy@mail.loc
554 5.1.7 Sender unknown
mail from: a@ya.ru
554 5.1.7 Sender domain unknown
mail from: gena@mail.ru
554 5.1.7 Sender domain unknown
mail from: gena@mail.loc
554 5.1.7 Sender unknown
mail from: root@mail.loc
250 2.1.0 root@mail.vit... Sender ok
^]
telnet> quit
Connection closed.

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

Вот полный кусок в sendmail.mc

Код: Выделить всё

LOCAL_CONFIG
Kuser user -m -a<>
LOCAL_RULESETS
SLocal_check_mail
R $+                            $: $1 $| $>Parse0 $>3 $1
R $+ $| $+ < @ $+. > $*         $: $1 $| $2 < @ $3 > $4
R $+ $| $+ < @ $+ > $*          $: $1 $| $2 < @ $3 > $4 $| ?
R $+ $| $+ < @ $=w > $* $| ?    $: $1 $| $2 < @ $3 > $4
R $+ $| $+ < @ $+ > $* $| ?     $#error $: 554 5.1.7 Sender domain unknown
R $+ $| $+ < @ $=w > $*         $: $1 $| $2 < @ $3 > $4 $| $(user $2 $: ? $)
R $+ $| $+ < @ $=w > $* $| ?    $: $1 $| $2 < @ $3 > $4 $| $(aliases $2 $: ? $)
R $+ $| $+ < @ $=w > $* $| ?    $: $1 $| $2 < @ $3 > $4 $| $(virtuser $2@$3 $: ? $)
R $+ $| $+ < @ $=w > $* $| ?    $: $1 $| $2 < @ $3 > $4 $| $(virtuser @$3 $: ? $)
R $+ $| $+ $| ?                 $#error $: 554 5.1.7 Sender unknown
R $+ $| $*                      $: $1
Да и пожалуй последний вопрос, как то можно сюда добавить разрешенные домены, на тот случай если появиться какой-то дополнительный почтовик или логи надо будет пересылать с другой машины?
Я так понял что даже если в access.db есть web.loc relay он всеравно не будет пускать письма с web.loc

Аватара пользователя
Stranger03
Сотрудник Тринити
Сотрудник Тринити
Сообщения: 12979
Зарегистрирован: 14 ноя 2003, 16:25
Откуда: СПб, Екатеринбург
Контактная информация:

Сообщение Stranger03 » 03 авг 2007, 12:28

Насколько я понимаю это правило работает для локального домена, который находится в файле local-host-name. Просто добавите туда еще один домен.

mitnik
member
Сообщения: 24
Зарегистрирован: 27 апр 2006, 13:57

Сообщение mitnik » 03 авг 2007, 14:52

Нет, такой вариант не проходит.

Аватара пользователя
Stranger03
Сотрудник Тринити
Сотрудник Тринити
Сообщения: 12979
Зарегистрирован: 14 ноя 2003, 16:25
Откуда: СПб, Екатеринбург
Контактная информация:

Сообщение Stranger03 » 03 авг 2007, 17:23

mitnik писал(а):Нет, такой вариант не проходит.
А вы в аксесс лист добавили правило? :twisted:. Мало добавить домен в локал-хост-нейм, надо создать разрешение в access и скомпилить базу.

mitnik
member
Сообщения: 24
Зарегистрирован: 27 апр 2006, 13:57

Сообщение mitnik » 03 авг 2007, 18:05

дааа, действительно пошло. Спасибо.

Аватара пользователя
corvax
free-lance moderator
Сообщения: 877
Зарегистрирован: 06 авг 2004, 17:21
Откуда: Kiev, Ukraine
Контактная информация:

Сообщение corvax » 03 авг 2007, 21:10

mitnik писал(а):Большущее спасибо. Как говорится респект и уважуха.

[root@service mail]# telnet 172.16.1.11 25
Trying 172.16.1.11...
Connected to mail.loc (172.16.1.11).
Escape character is '^]'.
220 localhost.localdomain ESMTP Sendmail 8.13.5/8.13.5; Fri, 3 Aug 2007 08:44:47 +0300
helo mail.loc
250 localhost.localdomain Hello mail.loc [172.16.1.11] (may be forged), pleased to meet you
mail from: vasiiiiliy@mail.loc
554 5.1.7 Sender unknown
mail from: a@ya.ru
554 5.1.7 Sender domain unknown
mail from: gena@mail.ru
554 5.1.7 Sender domain unknown
mail from: gena@mail.loc
554 5.1.7 Sender unknown
mail from: root@mail.loc
250 2.1.0 root@mail.vit... Sender ok
^]
telnet> quit
Connection closed.

То что надо. Не зря говорят, что тонкая настройка сендмайла - это высший пилотаж.  Сам думаю на постфикс уже сползать.
тогда лучше на exim
он еще более гибко настраивается
по части гибкости настроек postfix не является для меня адекватным MTA
но у меня потребности достаточно специфические
mitnik писал(а):Еще раз спасибо.
велкам
mitnik писал(а):Вот полный кусок в sendmail.mc

Код: Выделить всё

LOCAL_CONFIG
Kuser user -m -a<>
LOCAL_RULESETS
SLocal_check_mail
R $+                            $: $1 $| $>Parse0 $>3 $1
R $+ $| $+ < @ $+. > $*         $: $1 $| $2 < @ $3 > $4
R $+ $| $+ < @ $+ > $*          $: $1 $| $2 < @ $3 > $4 $| ?
R $+ $| $+ < @ $=w > $* $| ?    $: $1 $| $2 < @ $3 > $4
R $+ $| $+ < @ $+ > $* $| ?     $#error $: 554 5.1.7 Sender domain unknown
R $+ $| $+ < @ $=w > $*         $: $1 $| $2 < @ $3 > $4 $| $(user $2 $: ? $)
R $+ $| $+ < @ $=w > $* $| ?    $: $1 $| $2 < @ $3 > $4 $| $(aliases $2 $: ? $)
R $+ $| $+ < @ $=w > $* $| ?    $: $1 $| $2 < @ $3 > $4 $| $(virtuser $2@$3 $: ? $)
R $+ $| $+ < @ $=w > $* $| ?    $: $1 $| $2 < @ $3 > $4 $| $(virtuser @$3 $: ? $)
R $+ $| $+ $| ?                 $#error $: 554 5.1.7 Sender unknown
R $+ $| $*                      $: $1
Да и пожалуй последний вопрос, как то можно сюда добавить разрешенные домены, на тот случай если появиться какой-то дополнительный почтовик или логи надо будет пересылать с другой машины?
можно описать свой класс, как $w, и проверять в последнем добавленном фрагменте принадлежность домена не только к $w, но и к своему классу

если нужно будет, я потом допишу этот набор. там реально добавится всего пара строк
mitnik писал(а):Я так понял что даже если в access.db есть web.loc relay он всеравно не будет пускать письма с web.loc
так то настройки рилеинга

а мы нарисовали по сути некий локальный полиси. оно друг к другу отношения не имеет, разве что можно разрешенные домены и в access.db прописывать, а не просто в текстовом файле, тогда просто лукапы будут чуть сложнее
--
/corvax

mitnik
member
Сообщения: 24
Зарегистрирован: 27 апр 2006, 13:57

Сообщение mitnik » 06 авг 2007, 11:44

Ну уж если я Вас совсем не достал, то как бы мне на будущее добавить допустим либо ряд машин с поддоменами xxxxxxx.loc (web.loc, usergate.loc, spool.loc - для отсылки по локальной почте с этих серверов логов logwatch на аккаунт админа который на сервере root@mail.loc) либо может как-то можно просто задать их через диапазон айпи, чтоб либо проверка не проводилась, либо просто пропускалась от них почта, чтоб не писала несуществующего домена.
По ip наверное даже приоритетнее, чтоб задать диапазон адресов.
Т.к у компов в серверной адресация с 172.20. , а у абонентов с 172.40.

Аватара пользователя
Stranger03
Сотрудник Тринити
Сотрудник Тринити
Сообщения: 12979
Зарегистрирован: 14 ноя 2003, 16:25
Откуда: СПб, Екатеринбург
Контактная информация:

Сообщение Stranger03 » 06 авг 2007, 18:57

mitnik писал(а):По ip наверное даже приоритетнее, чтоб задать диапазон адресов.
Т.к у компов в серверной адресация с 172.20. , а у абонентов с 172.40.
Соотв-но в аксесс листе задать разрешения для этих подсетей.

Аватара пользователя
corvax
free-lance moderator
Сообщения: 877
Зарегистрирован: 06 авг 2004, 17:21
Откуда: Kiev, Ukraine
Контактная информация:

Сообщение corvax » 06 авг 2007, 19:20

Stranger03 писал(а):
mitnik писал(а):По ip наверное даже приоритетнее, чтоб задать диапазон адресов.
Т.к у компов в серверной адресация с 172.20. , а у абонентов с 172.40.
Соотв-но в аксесс листе задать разрешения для этих подсетей.
лукап в access.db по хосту отправителя не отменяет проверки адреса отправителя набором правил checkmail, из которого вызывается Local_check_mail, в который мы вставили фильтр

если же использовать исключения на базе домена отправителя, то штатный лукап в access.db при проверке отправителя производится в Basic_check_mail, вызываемом из checkmail. а Local_check_mail вызывается из checkmail раньше, чем Basic_check_mail

другими словами, любое исключение из нашего правила, описанное в access.db, будет работать только если мы будем делать лукапы в access.db самостоятельно

если автор вопроса за пару дней не сможет лукап написать (надо ж хоть что-то попробовать самому), тогда я напишу
--
/corvax

Ответить

Вернуться в «Серверы - ПО, Unix подобные системы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 15 гостей