LINUX.ORG.RU
ФорумAdmin

Dovecot (+exim) bash скрипт до авторизации

 , ,


0

2

Доброе. Подскажите, возможно ли заставить довекот запускать «script.sh $ip $user» ДО авторизации пользователя ? Скриптом хочу проверять ip и почту. Если я в РФ, то ip чекается через какой-нибудь ipinfo и если страна не RU - то бан (в какой-нибудь ipset), чтоб даже ответа хацкерам не прилетало, что логин/пасс неверный. Ну и если локация RU, но $user’а не существует (заданы списком/вручную) - то тоже в бан.

Что значит «до авторизации»? А кто у клиента тогда спросит $user? Ты собрался на bash-портянках реализовывать все возможные варианты IMAP авторизации, SSL и STARTTLS, просто чтобы выполнить свою странную задачу и дальше отдать данные уже сервису imap-login Dovecot’a?

Звучит как проблема XY.

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

Нет, я хочу чтоб довекот спросил $user, но ДО его родной проверки передал скрипту. Если такого пользователя нет (или страна не та), то чтоб довекот даже не успел отвечать клиенту, что логин/пароль нет тот…

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

довекот спросил $user

Это называется процессом аутентификации (а точне, на этом этапе, идентификации). Это уже не «ДО».

Как вариант можно посмотреть в сторону технологий предков: TCP Wrappers. Почитать о том что это и зачем можно тут: https://developer.ibm.com/articles/au-tcpwrapper/

Есть некоторые сомнения в том, что конкретно тебе это подойдет.

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

Спасибо, буду разбираться… Надеялся, что можно просто как в exim’е ACL’ку сделать вида deny condition = ${run{/usr/bin/sh /etc/exim4/spam.sh $sender_helo_name}} delay = 5s log_message = REJECT: ANTISPAMER-3M

она у меня отлично отрабатывает на проверку

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

После авторизации по простому можно и в dovecot, тут есть post-auth hook (https://doc.dovecot.org/2.3/admin_manual/post_login_scripting/).

Там всё просто: зашел Вася в свой аккаует с натовского IP – сразу в бан его и смена пароля в базе.

Перед авторизацией тоже можно, но у тебя не будет $user, а только IP и тут задача сводится к методу определения RU/не-RU (разные geoip базы, разные онлайн сервисы и т.п.). На IP же нигде не написано, что он RU.

Однако оба способа не подходят по описанные тобой условия задачи. В твоем случае только метод вырезания гланд через пятую точку в виде tcpwrapper’ов.

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

RE:Перед авторизацией тоже можно, но у тебя не будет $user, а только IP…

Вот, мне бы и IP достаточно было бы. Дальше можно и со своей базой сверить, и, если новый - курлом в ipinfo.io спросить (там на выходе json прилетает со всеми нужными данными =)))

AntonDZ
() автор топика
Ответ на: комментарий от BOOBLIK

Подскажите, никак не догоню… RE: Перед авторизацией тоже можно, но у тебя не будет $user, а только IP и тут задача сводится к методу определения RU/не-RU (разные geoip базы, разные онлайн сервисы и т.п.). На IP же нигде не написано, что он RU.

…скрипт вызываться должен service pop3 {} и service pop3 {} , или уже внутри service auth {} ?

AntonDZ
() автор топика