Рейтинг:1

POSTFIX/Серый список не работает

флаг in

У меня была спам-атака на мой сайт. кто-то использует мою электронную почту для рассылки спама всем.

Так что теперь я планирую найти способ остановить это.

Я вижу, как люди отклоняют почту с помощью регулярных выражений. Но у меня есть тонны и тонны разных электронных писем (50 000 пользователей).

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

У меня есть этот greylist.pl:

#main.cf 
smtpd_recipient_restrictions = Permit_MyNetworks, Allow_Sasl_аутентифицированный, reject_unauth_destination, Check_policy_service unix:/private/greylist

#master.cf
greylist unix - n n - - spawn user=nobody argv=/usr/bin/perl /tmp/mailrejct.

Но когда я его использую, я получаю эти ошибки в почтовом журнале:

25 декабря 09:24:58 интеллигентая(ый) mahavira postfix/spawn[107258]: предупреждение: команда /usr/bin/perl статус выхода 2
25 декабря, 09:24:58 интеллигентая(ый) mahavira postfix/smtpd[107253]: предупреждение: преждевременный конец ввода в /private/greylist при чтении имени входного атрибута
25 декабря 09:24:59 интеллигентая(ый) mahavira postfix/spawn[107258]: предупреждение: команда /usr/bin/perl статус выхода 2
25 декабря, 09:24:59 интеллигентая(ый) mahavira postfix/smtpd[107253]: предупреждение: преждевременный конец ввода в /private/greylist при чтении имени входного атрибута
25 декабря, 09:24:59 интеллигентая(ый) mahavira postfix/smtpd[107253]: предупреждение: проблема при общении с сервером /private/greylist: соединение сброшено узлом

я заменил smtpd_access_policy с моим. Это одно отличие. Любой специалист в этом.

Кто отправляет значения атрибутов? Постфикс? как это прошло?

НЕ РЕШЕНО. Это только для получения электронной почты. Только для входящего спама.

Для исходящей электронной почты предусмотрена только проверка шаблонов.

1 #!/bin/sh
 2 
 3 # Простой фильтр на основе оболочки. Он предназначен для вызова следующим образом:
 4 # /path/to/script -f отправитель получатели...
 5 
 6 # Локализуйте их. Опция -G ничего не делает до Postfix 2.3.
 7 INSPECT_DIR=/var/spool/filter
 8 SENDMAIL="/usr/sbin/sendmail -G -i" # НИКОГДА НИКОГДА НИКОГДА не используйте здесь "-t".
 9 
10 # Коды выхода из <sysexits.h>
11 EX_TEMPFAIL=75
12 EX_UNAVAILABLE=69
13 
14 # Очистить после завершения или при прерывании.
15 ловушка "rm -f in.$$" 0 1 2 3 15
16 
17 # Начать обработку.
18 компакт-диск $INSPECT_DIR || {
19 эхо $INSPECT_DIR не существует; выход $EX_TEMPFAIL; }
20 
21 кот >в.$$ || { 
22 echo Не удается сохранить почту в файл; выход $EX_TEMPFAIL; }
23 
24 # Укажите здесь фильтр содержимого.
25 # фильтр <in.$$ || {
26 # echo Содержание сообщения отклонено; выход $EX_UNAVAILABLE; }
27 
28 $SENDMAIL "$@" <in.$$
29 
30 выходных $?



Можно ли преобразовать приведенное выше в php-код? Мне интересно, если я отправлю почту из php, она вернется в то же место?

exec("/usr/sbin/sendmail $email < /etc/postfix/myfilter/email.txt");

мне нужно поместить материал электронной почты в email.txt. КОГДА я ставлю весь тест, он искажает электронные письма с деталями и прочим, которые показывают все содержимое и заголовки.

мне нужно убраться

От [email protected] Вс, 26 декабря, 12:31:47 2021
Получено: от webmail.test.com (localhost.localdomain [IPv6:::1])
        от Intelligent-mahavira.51-163-215-224.plesk.page (Postfix) с идентификатором ESMTPSA B9CFD82DA1
        для <[email protected]>; Вс, 26 декабря 2021 г., 12:31:47 +0000 (UTC)
Результаты аутентификации: Intelligent-mahavira.51-163-215-224.plesk.page;
        spf=pass (IP-адрес отправителя ::1) [email protected] smtp.helo=webmail.test.com
Received-SPF: pass (intelligent-mahavira.51-163-215-224.plesk.page: соединение аутентифицировано)
MIME-версия: 1.0
Дата: Вс, 26 декабря 2021 г., 04:31:47 -08:00
От: [email protected]
Кому: alex3 <[email protected]>
Тема: тестирование filter2
Пользовательский агент: Roundcube Webmail/1.4.11
Идентификатор сообщения: <[email protected]>
X-Sender: [email protected]
Content-Type: текстовый/обычный; набор символов = US-ASCII;
 формат = течет
Контент-передача-кодирование: 7 бит
X-PPP-Message-ID: <164052190789.24073.12166249882816501264@intelligent-mahavira.51-163-215-224.plesk.page>
X-PPP-Vhost: test.com

ссс


Я видел это где-то в Google, попробую завтра, используя регулярное выражение, чтобы отфильтровать тему из типа контента и тела.

    Кому: [email protected]
    Тема: Это HTML-сообщение.
    От: [email protected]
    Тип содержимого: текст/html; кодировка = "utf8"

    <html>
    <тело>
    <стиль div="
        фоновый цвет: 
        #abcdef; ширина: 300 пикселей; 
        высота: 300 пикселей;
        ">
    </div>
    Здесь вы можете добавить любой действительный HTML-код электронной почты.
    </тело>
    </html>
  1. Greylisting — мы можем дать отзыв о доступе в форме «не знаю», «отклонить необязательный текст».
  2. Простой фильтр без обратной связи. Фильтр должен обрабатывать отправку электронной почты. Не понятно как это делается. Я в основном собираю все STDIN и отправляю их по электронной почте, но у них есть все заголовки. Не знаю, как вложение обрабатывается. Нужно посмотреть, что он показывает, когда я отправляю вложение.
  3. Расширенная фильтрация выглядит запутанной. Я вижу, что система безопасности электронной почты plex реализует это. когда я добавил его, он добавил это в main.cf и master.cf

smtp инет n - n - - smtpd
  -o content_filter = smtp-amavis:[127.0.0.1]:10024


локальный: 10025 инет n - n - - smtpd
  -o content_filter=
  -o local_recipient_maps=
  -o relay_recipient_maps=
  -o smtpd_delay_reject=нет
  -o smtpd_authorized_xforward_hosts=127.0.0.0/8,[::1]/128
  -o smtpd_authorized_xclient_hosts=127.0.0.0/8,[::1]/128
  -o smtpd_client_restrictions=разрешить_мои сети, отклонить
  -o smtpd_helo_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_recipient_restrictions=разрешить_мои сети, отклонить
  -o smtpd_data_restrictions=reject_unauth_pipelining
  -o smtpd_end_of_data_restrictions=
  -o smtpd_restriction_classes=
  -o мои сети=127.0.0.0/8,[::1]/128
  -o smtpd_error_sleep_time=0
  -o smtpd_soft_error_limit=1001
  -o smtpd_hard_error_limit=1000
  -o smtpd_client_connection_count_limit=0
  -o smtpd_client_connection_rate_limit=0
  -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
  -o local_header_rewrite_clients=
отправка inet n - n - - smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=шифровать
  -o smtpd_sasl_auth_enable=да
  -o smtpd_client_restrictions=permit_sasl_authenticated,отклонить
  -o smtpd_relay_restrictions=permit_sasl_authenticated,отклонить
  -o content_filter=smtp-amavis:[127.0.0.1]:10026
пикап unix n - n 60 1 пикап
  -o content_filter=smtp-amavis:[127.0.0.1]:10026

Это электронное письмо, сохраненное в data.txt, и отправьте его вручную, если оно совпадает с адресом электронной почты получателя в системе.

Получено: от webmail.test.com (localhost.localdomain [IPv6:::1])
        от Intelligent-mahavira.serverip.plesk.page (Postfix) с идентификатором ESMTPSA C7E7282E1B;
        Вт, 28 декабря 2021 г., 00:36:31 +0000 (UTC)
Результаты аутентификации: Intelligent-mahavira.serverip.plesk.page;
        spf=pass (IP-адрес отправителя ::1) [email protected] smtp.helo=webmail.test.com
Received-SPF: pass (intelligent-mahavira.serverip.plesk.page: соединение аутентифицировано)
MIME-версия: 1.0
Дата: Пн, 27 декабря 2021 г., 16:36:31 -08:00
От: [email protected]
Кому: alex2 <[email protected]>, alex3 <[email protected]>,
 [email protected]
Тема: Тест на привязанность
Пользовательский агент: Roundcube Webmail/1.4.11
Идентификатор сообщения: <[email protected]>
X-Sender: [email protected]
Content-Type: составной/смешанный;
 граница = "=_ 5745fc7d762d12dda4165a3e0be576fc"
X-PPP-Message-ID: <164065179196.8458.1248882909976426707@intelligent-mahavira.serverip.plesk.page>
X-PPP-Vhost: test.com

--=_5745fc7d762d12dda4165a3e0be576fc
Контент-передача-кодирование: 7 бит
Content-Type: текстовый/обычный; набор символов = US-ASCII;
 формат = течет

Прикрепление прошло успешно?
--=_5745fc7d762d12dda4165a3e0be576fc
Контент-передача-кодирование: base64
Тип контента: изображение/jpeg;
 имя=536_PIA23645_PaleBlueDotRevisited_1600.jpg
Content-Disposition: вложение;
 имя_файла=536_PIA23645_PaleBlueDotRevisited_1600.jpg;
 размер=74009

/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAA8AAD/4QMcaHR0cDov

Проблема в том, что в письме нет темы. его скрытые внутри заголовков. Уродливый.

результат

  1. Входящее с электронной почты, скажем, gmail .. у меня чистый тест отказов Ответ с удаленного сервера был таким: 554 5.7.1 [email protected]: адрес получателя отклонен: электронная почта разрешена только между ПОЛЬЗОВАТЕЛЯМИ. Получатель электронной почты = [email protected] Использует метод политики

  2. Исходящая электронная почта Я отправляю электронную почту для действительных пользователей и отклоняю/изолирую другую.. я не получаю возврат изображения. мне нужно иметь такой же текст для исходящей электронной почты Использует простой фильтр контента

флаг jp
Непонятно, чего вы пытаетесь добиться. Это исходящие электронные письма с вашего домена, и вы хотите проверить отправителей? Или вы хотите проверить входящие электронные письма, и вы хотите проверить получателей? Или у вас есть открытый ретранслятор, и кто-то использовал ваш сервер для рассылки спама другим? Или кто-то просто подделал вашу электронную почту и использовал ее для рассылки спама, и вам просто нужны правильные SPF/DKIM/DMARC?
Jupiter rules avatar
флаг in
Если кто-то взломал электронную почту одного из пользователей и начал рассылать спам, используя наши серверы, или какой-то код на нашем веб-сайте был взломан, и кто-то использовал наш логин для рассылки спама. Никакие серые списки не могут этому помешать. Поэтому я реализовал систему, которая проверяет, находятся ли исходящие получатели в базе данных, если они не отклонены. Мне не нравится отклонение, потому что это уничтожит наш почтовый ящик, потому что кто-то использует наш почтовый ящик. Я хочу на карантин.Наконец-то я получил отказ. Через 2 недели думал как реализовать. Первоначально использовал хук для печати информации электронной почты, но больше ничего не делал.
Nikita Kipriyanov avatar
флаг za
Не отправлять письмо отправителю. Если это спам, вы создадите обратное рассеяние, которое почти так же плохо, как и сам спам. Как именно ваше приложение отправляет почту? Вы используете PHPMailer что-то вроде этого? Если нет, то это первое, что вы должны сделать.
Jupiter rules avatar
флаг in
Да, php mailer отправляет электронную почту системным пользователям. Моя идея - блокировать любые электронные письма, которых нет в системе. До сих пор я использовал простой фильтр в постфиксе. Но расширенный фильтр немного сбивает с толку. Документы для постфикса очень плохие. Он написан в контексте разработчика, но не исполнителя. Всегда не хватает какого-то объяснения. Отсутствие примеров — проблема. Простой фильтр отправляет электронную почту, но какую электронную почту? А как насчет вложений в этом письме?
Nikita Kipriyanov avatar
флаг za
Итак, использует ли PHPMailer SMTP (и предпочтительную аутентификацию) при подключении к вашему почтовому серверу? Как именно он настроен? Какая служба Postfix SMTP получает отправку PHPMailer? (Я подозреваю, что он попадает в `mynetworks` и разрешается с помощью `permit_mynetworks` или чего-то в этом роде, и Amavis также настроен на пропуск большинства проверок адресов из «белого списка». Вы должны переделать это; либо поместите проверки службы политики перед ` allow_mynetworks` или перенастройте контентный фильтр, чтобы не делать исключений.)
Jupiter rules avatar
флаг in
Я использую phpmailer для отправки электронных писем клиентам, использующим SMTP через порт 25. Весь smptpd в main.cf предназначен для входящих электронных писем. Мне нужно что-то для исходящих писем, поэтому я просто возвращаю сообщение электронной почты «Отклонить», используя политику. но я не вижу найти тот, который я могу использовать. Транспортные карты запускают отправку электронной почты, но в результате ожидают карты. Больше статической таблицы поиска, а не динамической, как процесс создания.
Jupiter rules avatar
флаг in
Простой фильтр улавливает его, но мне нужно повторно отправить письмо самому. Но содержимое показывает все заголовки и прочее при получении. Так что я должен увидеть, что я должен отправить. Какой будет привязанность.я обновляю результат теста вложения после того, как проверю это. если это не удастся, мне нужно выяснить, как работает расширенный фильтр, как кажется, слушая сообщение 10026.
bjoster avatar
флаг cn
Это слишком много для одного ответа. Разделите свой вопрос (например) на четыре части (я думаю, что вижу вопросы о серых списках, сопоставлении регулярных выражений, настройке Postfix и Perl) и получайте ответы один за другим.
Рейтинг:1
флаг za

Постфикс поддерживает услуги политики. То, о чем вы просите, можно реализовать, разработав службу политик. Также могут быть другие способы; этот способ - просто первое, что пришло мне в голову.В примере в конце этой страницы есть почти все, что вам нужно.

Однако это тупиковый путь. Вместо того, чтобы правильно спроектировать и защитить веб-приложение и сервер, вы позволяете злоумышленнику проникнуть внутрь, а затем пытаетесь избежать неизбежных последствий. Вы выяснили, как они сделали это через ваше веб-приложение? Ты заделал эту дыру? Это должно быть вашим главным приоритетом.

Кроме того, общие рекомендации:

  1. Ваше веб-приложение не должно отправлять почту по воле третьих лиц. Он должен отправлять его только тогда, когда вы уверены, что электронная почта должна быть отправлена.
  2. Веб-приложение должно всегда аутентифицировать на почтовый сервер. Очень неправильно полагаться на почта() функция чего-то подобного. Существует несколько библиотек PHP, которые умеют выполнять аутентификацию ESMTP, используйте одну из них.
  3. Ваш почтовый сервер должен ограничивать адрес отправителя, который может использовать ваш сайт. А также может ограничивать поток почты, устанавливая некоторые лимиты (в час, в день и т. д.); есть способы сделать это.
  4. Почтовый сервер может проверять почту на наличие спама перед доставкой. Так вы пропустите меньше спама.
Paul avatar
флаг cn
@Jupiterrules Если это ответ на ваш вопрос, отметьте его как ответ.
Jupiter rules avatar
флаг in
На самом деле нет. Он используется только для входящей электронной почты извне. Исходящая электронная почта проверяется только заголовком и телом, они проверяют только шаблоны. Не могу их использовать, так как в моей базе данных 50000 электронных писем пользователей с разных доменов. ЗАСТРЯВШИЙ
Nikita Kipriyanov avatar
флаг za
С точки зрения MTA не существует «входящей» или «исходящей» почты. Это конструкция вашего ума. Вся почта "проходит". Например, после того, как вы настроили свой PHP-скрипт всегда отправлять почту с помощью ESMTP с аутентификацией, вы можете прикрепить любые проверки к этому SMTP-серверу, который получает эту отправку, включая те, которые вы считаете полезными только для «фильтрации входящего спама».
Jupiter rules avatar
флаг in
Извините, я уже проверил. Только электронные письма, приходящие из-за пределов моего домена, попадают под ограничения smtp_recipient. Так что политика серого списка или моя политика могут ловить. Для исходящих сообщений контент-фильтр улавливает их, но вы должны делать это по электронной почте, так как обратной связи с системой нет. Я обновлю, как только мне удастся отправить правильное электронное письмо обратно отправителю и отправить сообщения о состоянии в системный журнал и почтовый журнал для Fail2ban, чтобы получить IP-адрес отправителя для запрета IP
Jupiter rules avatar
флаг in
Итак, решение такое. Исходящая электронная почта от пользователей в системе... я использую контент-фильтр для проверки подписи. Входящая электронная почта. Я использую код стиля серого списка, но проверяю пользователя в системе, если он не входит в почтовый журнал как неудачное электронное письмо. Он будет выбран fail2ban и навсегда заблокирован после 3 неверных писем.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.