Почтовые сервера, как правило, добавляют в заголовки писем всю цепочку адресов, которые оно прошло. Это стандартное поведение. Например, клиент с IP адресом 192.168.115.5 отправил письмо через почтовый сервер 95.185.15.218. В заголовках письма Received: будет отражена вся эта цепочка.
Вот реальный пример заголовка отправленного письма с моего тестового сервера, к которому я подключаюсь для отправки:
Тут указан мой локальный адрес 10.8.2.2, на котором был запущен мой почтовый клиент и некоторые мои параметры соединения. Внешним получателям не обязательно знать вашу внутреннюю кухню. Можно эту информацию удалить. В Postfix это делается очень просто. За это я его и люблю и обычно именно его использую. Очень легко настроить то, что вам нужно.
Добавляем в основной конфиг сервера
Создаём этот файл
Создаём db файл и перечитываем конфигурацию:
Больше в
Другие полезные материалы по Postfix:
◽️Ограничение на отправку писем в единицу времени
◽️Перенос почтового сервера
▪️ Мониторинг postfix в zabbix
▪️ Настройка маршрута отправки в зависимости от домена
▪️ Как изменить тему письма и адрес отправителя через postfix
▪️ Выбор сервера для отправки в зависимости от получателя
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#postfix
Вот реальный пример заголовка отправленного письма с моего тестового сервера, к которому я подключаюсь для отправки:
Received: from [10.8.2.2] (unknown [176.119.158.81])
(using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
(No client certificate requested)
by mail.rocky-linux.ru (MailServer) with ESMTPSA id 59C4811B337
Тут указан мой локальный адрес 10.8.2.2, на котором был запущен мой почтовый клиент и некоторые мои параметры соединения. Внешним получателям не обязательно знать вашу внутреннюю кухню. Можно эту информацию удалить. В Postfix это делается очень просто. За это я его и люблю и обычно именно его использую. Очень легко настроить то, что вам нужно.
Добавляем в основной конфиг сервера
/etc/postfix/main.cf новый параметр:header_checks = regexp:/etc/postfix/header_checksСоздаём этот файл
/etc/postfix/header_checks и добавляем в моём случае такое содержимое:/^Received:.*\[10\.8\.2\.[0-9]/ IGNOREСоздаём db файл и перечитываем конфигурацию:
# postmap header_checks# postfix reloadБольше в
Received: заголовках писем, отправленных через мой почтовый сервер не будет информации о клиентах из подсети 10.8.2.0/24.Другие полезные материалы по Postfix:
◽️Ограничение на отправку писем в единицу времени
◽️Перенос почтового сервера
▪️ Мониторинг postfix в zabbix
▪️ Настройка маршрута отправки в зависимости от домена
▪️ Как изменить тему письма и адрес отправителя через postfix
▪️ Выбор сервера для отправки в зависимости от получателя
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#postfix
2👍157👎5
Почтовый сервер postfix позволяет очень гибко управлять транспортом почты во всех направлениях. Меня не раз спрашивали, можно ли сделать так, чтобы на какой-то домен почта не отправлялась, но при этом клиент во время отправки не получал никакой ошибки. То есть он как-будто всё отправил, но письмо реально не ушло.
Я так сходу не придумал как это сделать стандартными средствами postfix без костылей. У него есть настройка smtpd_recipient_restrictions, где можно управлять разрешениями для получателей. Там можно явно указать, что для конкретного домена отправка запрещена. Но клиент при попытке отправить туда письмо, получит обратное письмо с ошибкой на тему того, что это запрещено.
Это не всегда удобно. Можно подумать, что это нужно для того, чтобы ввести в заблуждение пользователя почты, чтобы он не знал, что письмо реально не доставлено. Но на самом деле нет. Это чаще всего нужно не для этого. Например, может быть софт, который делает какие-то отправки по определённому набору доменов. И отправлять ему можно только туда. Если в его список рассылки по какой-то причине попадут другие домены, а вы настроите smtpd_recipient_restrictions, то его завалит обратными письмами с ошибками.
В общем, ситуации бывают разные. Расскажу, как всё это можно настроить встроенными инструментами postfix. Он будет отправлять письма только разрешённым доменам или наоборот, запретит отправку на какие-то домены, но при этом отправляющий будет думать, что всё ОК, обратного письма с ошибкой он не получит. При этом в логе postfix будет явно видно, что письмо не было отправлено.
Настраиваем параметр transport_maps, добавляя в
Создаём файл
Создаём индексированный файл и перечитываем конфигурацию:
Теперь при отправке письма на домен example.com клиент не получит никакой ошибки. Он будет считать, что письмо нормально отправлено. При этом в логе postfix это отразится вот так:
Отправки реально не было, так как
Для example.com обычная доставка, для всех остальных - discard. Поясню, как это работает. Данный параметр я знаю давно и активно использую. Пример файла
Первый домен websrv.site.ru используется как локальный. Вся почта для этого домена отправляется только локально в рамках данного сервера. Второй домен backupmail.ru используется для бэкапа всей корреспонденции. Ящики из этого домена настроены как сборщики копий через bcc_maps всей входящей и исходящей почты. Третья строчка указывает отправлять всю остальную почту через smtp сервер Яндекса.
Подробно я эту тему рассматривал в отдельной статье:
⇨ Postfix - выбор сервера для отправки в зависимости от получателя
Там как раз рассматривается параметр transport_maps, но не в контексте задачи скрытого запрета отправки писем. Для запрета мы просто указали соответствующий транспорт - discard, вместо relay. И письма в итоге не отправляются.
Если у кого-то есть вопросы по настройке postfix, можете задавать в комментариях. Попробую подсказать. Я много всего обычного и не очень настраивал на postfix.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#postfix
Я так сходу не придумал как это сделать стандартными средствами postfix без костылей. У него есть настройка smtpd_recipient_restrictions, где можно управлять разрешениями для получателей. Там можно явно указать, что для конкретного домена отправка запрещена. Но клиент при попытке отправить туда письмо, получит обратное письмо с ошибкой на тему того, что это запрещено.
Это не всегда удобно. Можно подумать, что это нужно для того, чтобы ввести в заблуждение пользователя почты, чтобы он не знал, что письмо реально не доставлено. Но на самом деле нет. Это чаще всего нужно не для этого. Например, может быть софт, который делает какие-то отправки по определённому набору доменов. И отправлять ему можно только туда. Если в его список рассылки по какой-то причине попадут другие домены, а вы настроите smtpd_recipient_restrictions, то его завалит обратными письмами с ошибками.
В общем, ситуации бывают разные. Расскажу, как всё это можно настроить встроенными инструментами postfix. Он будет отправлять письма только разрешённым доменам или наоборот, запретит отправку на какие-то домены, но при этом отправляющий будет думать, что всё ОК, обратного письма с ошибкой он не получит. При этом в логе postfix будет явно видно, что письмо не было отправлено.
Настраиваем параметр transport_maps, добавляя в
/etc/postfix/main.cf:transport_maps = hash:/etc/postfix/transport_mapСоздаём файл
/etc/postfix/transport_map следующего содержания:example.com discard: Not allowed destinationСоздаём индексированный файл и перечитываем конфигурацию:
# postmap /etc/postfix/transport_map# postfix reloadТеперь при отправке письма на домен example.com клиент не получит никакой ошибки. Он будет считать, что письмо нормально отправлено. При этом в логе postfix это отразится вот так:
2025-05-06T11:41:29.689884+03:00 mailsrv postfix/discard[3974535]: 887AA11B319: to=<user@example.com>, relay=none, delay=0.18, delays=0.17/0.01/0/0, dsn=2.0.0, status=sent (Not allowed destination)Отправки реально не было, так как
relay=none. Можно сделать и обратную ситуацию. Отменить отправку на все домены, кроме example.com. Тогда файл transport_map будет выглядеть так:example.com :* discard: Not allowed destinationДля example.com обычная доставка, для всех остальных - discard. Поясню, как это работает. Данный параметр я знаю давно и активно использую. Пример файла
transport_map из моей практики:websrv.site.ru localbackupmail.ru relay:[backupmail.ru]:25* relay:[smtp.yandex.ru]:465Первый домен websrv.site.ru используется как локальный. Вся почта для этого домена отправляется только локально в рамках данного сервера. Второй домен backupmail.ru используется для бэкапа всей корреспонденции. Ящики из этого домена настроены как сборщики копий через bcc_maps всей входящей и исходящей почты. Третья строчка указывает отправлять всю остальную почту через smtp сервер Яндекса.
Подробно я эту тему рассматривал в отдельной статье:
⇨ Postfix - выбор сервера для отправки в зависимости от получателя
Там как раз рассматривается параметр transport_maps, но не в контексте задачи скрытого запрета отправки писем. Для запрета мы просто указали соответствующий транспорт - discard, вместо relay. И письма в итоге не отправляются.
Если у кого-то есть вопросы по настройке postfix, можете задавать в комментариях. Попробую подсказать. Я много всего обычного и не очень настраивал на postfix.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#postfix
Server Admin
Postfix - выбор сервера для отправки в зависимости от получателя |...
user1@site1.ru user1 user2@site2.ru user2 Если у вас использует разные ящики для отправки, то можете настроить правило для всего домена сразу: *@site1.ru user1 *@site2.ru user2 Дальше вам нужно...
👍101👎3
Я наконец-то закончил обновление статьи про локальный почтовый сервер на базе Postfix и Dovecot:
⇨ Настройка Postfix + Dovecot + Postfixadmin + Roundcube + DKIM на Debian
Она актуальна на сегодняшний день на базе Debian 13 и стандартных пакетов в её репозитории. Хотя для примера я некоторые компоненты скачивал из их репозиториев и устанавливал вручную, так как со временем в Debian версии начинают отставать от актуальных.
Старую версию статьи под Debian 12 сохранил в виде статической страницы и упаковал в архив. Ссылка в начале новой статьи. Если кто-то по ней настраивал или что-то нужно будет подсмотреть, можете скачать. Я не стал плодить похожие статьи с разными версиями ПО, так как это неудобно, приводит к дублированию информации на сайте и путанице. Удобнее, когда есть одна актуальная статья, на которую можно ссылаться.
Уместил в одну статью практически невмещаемое. Очень большой материал получился, по которому можно с нуля практически без базовых знаний о предметной области, настроить и запустить в работу почтовый сервер. Материал подаётся этапами с объяснениями на каждом, чтобы было понятнее.
Можно было бы сразу итоговый вариант настроек дать и всё разом запустить, но это было бы не так понятно. В целом, подобный сервер можно запустить в пару кликов на базе какого-нибудь Mailcow, Mailu, или их аналогов. Почти все сборки бесплатных серверов (и не только бесплатных) сделаны на базе этих же компонентов. Но если вы собираетесь потом эксплуатировать и администрировать этот сервер, то без знания его устройства это будет сложно сделать.
Так что если хотите изучить эту тему, то рекомендую действовать похожим образом, описанным в статье. Несмотря на то, что почту и локальные серверы для неё хоронят уже столько лет, актуальности она не потеряла и повсеместно используется. А как показал недавний опрос, локальных установок значительно больше, чем использование облачных сервисов. А подобных сборок так вообще треть. И этому есть вполне логичные объяснения. Я на днях ещё подниму эту тему.
Всем спасибо, кто пролайкал и прокомментировал мою прошлую заметку по этой теме. Любому автору приятно осознавать, что то, что он делает, кому-то нужно. Поэтому лично я всегда лайкаю и комментирую то, что вижу у других авторов. У многих нет финансовой мотивации что-то делать, потому что их сфера либо не монетизируется, либо они не умеют это делать, а сами работают в других местах. Но при этом всё равно что-то пишут, снимают, делают для других.
Например, сайт для меня в финансовом плане сейчас пассив. Но я вижу, что его каждый день до сих пор читает огромное количество людей. Они находят его полезным, хотя многие материалы сильно устарели, содержат ошибки. По мере сил и времени, стараюсь что-то обновлять и актуализировать. Эту статью писал в выходные, на буднях просто нет на это времени.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
———
ServerAdmin:📱 Telegram | 🌐 Сайт | 📲 MAX
#mailserver #postfix #dovecot #статья
⇨ Настройка Postfix + Dovecot + Postfixadmin + Roundcube + DKIM на Debian
Она актуальна на сегодняшний день на базе Debian 13 и стандартных пакетов в её репозитории. Хотя для примера я некоторые компоненты скачивал из их репозиториев и устанавливал вручную, так как со временем в Debian версии начинают отставать от актуальных.
Старую версию статьи под Debian 12 сохранил в виде статической страницы и упаковал в архив. Ссылка в начале новой статьи. Если кто-то по ней настраивал или что-то нужно будет подсмотреть, можете скачать. Я не стал плодить похожие статьи с разными версиями ПО, так как это неудобно, приводит к дублированию информации на сайте и путанице. Удобнее, когда есть одна актуальная статья, на которую можно ссылаться.
Уместил в одну статью практически невмещаемое. Очень большой материал получился, по которому можно с нуля практически без базовых знаний о предметной области, настроить и запустить в работу почтовый сервер. Материал подаётся этапами с объяснениями на каждом, чтобы было понятнее.
Можно было бы сразу итоговый вариант настроек дать и всё разом запустить, но это было бы не так понятно. В целом, подобный сервер можно запустить в пару кликов на базе какого-нибудь Mailcow, Mailu, или их аналогов. Почти все сборки бесплатных серверов (и не только бесплатных) сделаны на базе этих же компонентов. Но если вы собираетесь потом эксплуатировать и администрировать этот сервер, то без знания его устройства это будет сложно сделать.
Так что если хотите изучить эту тему, то рекомендую действовать похожим образом, описанным в статье. Несмотря на то, что почту и локальные серверы для неё хоронят уже столько лет, актуальности она не потеряла и повсеместно используется. А как показал недавний опрос, локальных установок значительно больше, чем использование облачных сервисов. А подобных сборок так вообще треть. И этому есть вполне логичные объяснения. Я на днях ещё подниму эту тему.
Всем спасибо, кто пролайкал и прокомментировал мою прошлую заметку по этой теме. Любому автору приятно осознавать, что то, что он делает, кому-то нужно. Поэтому лично я всегда лайкаю и комментирую то, что вижу у других авторов. У многих нет финансовой мотивации что-то делать, потому что их сфера либо не монетизируется, либо они не умеют это делать, а сами работают в других местах. Но при этом всё равно что-то пишут, снимают, делают для других.
Например, сайт для меня в финансовом плане сейчас пассив. Но я вижу, что его каждый день до сих пор читает огромное количество людей. Они находят его полезным, хотя многие материалы сильно устарели, содержат ошибки. По мере сил и времени, стараюсь что-то обновлять и актуализировать. Эту статью писал в выходные, на буднях просто нет на это времени.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
———
ServerAdmin:
#mailserver #postfix #dovecot #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
Server Admin
Настройка почтового сервера на Debian: Postfix + Dovecot + веб...
Подробная установка и настройка почтового сервера на Debian на базе Postfix + Dovecot - от подготовки DNS записей до подключения клиентов.
106👍350👎2
Решил обновить весь цикл статей про почтовый сервер. Начал с самой актуальной - настройка Fail2Ban для защиты от перебора учёток и прочих паразитных соединений:
⇨ Защита почтового сервера Postfix + Dovecot с помощью Fail2Ban
Инструкция получилась универсальная, потому что и для Postfix, и для Dovecot пришлось писать свой шаблон под формат текущих логов свежих версий. Так что материал будет актуален для любого сервиса с текстовыми логами.
В очередной раз хотел сходить по лёгкому пути и попросил ИИ написать шаблоны. ChatGPT не справился совершенно. Мучал его минут 15, пока не понял, что это бесполезно и проще разобраться самому. Он постоянно обещал теперь точно рабочую версию, но всё мимо. PerplexityPro тоже не помогла.
Я пока спокоен за своё будущее трудоустройство. Современные ИИшки никаким интеллектом не обладают и даже имея документацию и похожие примеры не могут родить новое уникальное решение, которое ещё нигде не подсмотрели. У них хорошо получается с bash, думал и с другими вещами так же будет, но нет.
Fail2Ban очень старое, простое и эффективное средство. За столько лет у него не появилось аналогов, кроме CrowdSec, но он сильно навороченнее и движется в сторону масштабного сервиса, а не простой утилиты для одиночного сервера. При этом Fail2Ban, несмотря на свою простоту и топорный подход анализа логов, работает нормально и эффективно там, где нет больших нагрузок. Я его повсеместно использую.
Помню как-то даже шутку придумал:
Это придумано в контексте того, что сам я лично для SSH никогда не ставлю Fail2Ban. В этом просто нет большого смысла.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
———
ServerAdmin:📱 Telegram | 🌐 Сайт | 📲 MAX
#fail2ban #mailserver #postfix #dovecot
⇨ Защита почтового сервера Postfix + Dovecot с помощью Fail2Ban
Инструкция получилась универсальная, потому что и для Postfix, и для Dovecot пришлось писать свой шаблон под формат текущих логов свежих версий. Так что материал будет актуален для любого сервиса с текстовыми логами.
В очередной раз хотел сходить по лёгкому пути и попросил ИИ написать шаблоны. ChatGPT не справился совершенно. Мучал его минут 15, пока не понял, что это бесполезно и проще разобраться самому. Он постоянно обещал теперь точно рабочую версию, но всё мимо. PerplexityPro тоже не помогла.
Я пока спокоен за своё будущее трудоустройство. Современные ИИшки никаким интеллектом не обладают и даже имея документацию и похожие примеры не могут родить новое уникальное решение, которое ещё нигде не подсмотрели. У них хорошо получается с bash, думал и с другими вещами так же будет, но нет.
Fail2Ban очень старое, простое и эффективное средство. За столько лет у него не появилось аналогов, кроме CrowdSec, но он сильно навороченнее и движется в сторону масштабного сервиса, а не простой утилиты для одиночного сервера. При этом Fail2Ban, несмотря на свою простоту и топорный подход анализа логов, работает нормально и эффективно там, где нет больших нагрузок. Я его повсеместно использую.
Помню как-то даже шутку придумал:
«Если я усну и проснусь через сто лет и меня спросят, что сейчас настраивают системные администраторы Linux, я отвечу: блокировку SSH с помощью Fail2Ban».
Это придумано в контексте того, что сам я лично для SSH никогда не ставлю Fail2Ban. В этом просто нет большого смысла.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
———
ServerAdmin:
#fail2ban #mailserver #postfix #dovecot
Please open Telegram to view this post
VIEW IN TELEGRAM
Server Admin
Защита почтового сервера Postfix + Dovecot с помощью Fail2Ban |...
Защита почтового сервера на базе Postfix и Dovecot от перебора учётных записей с помощью Fail2Ban.
1👍95👎4