Ещё немного про личное железо. Возможно, кому-то будет полезно для сохранности экрана. У меня на ноуте постоянно оставались следы от клавиатуры на экране. Ну оставались и оставались, какие вещи не пылятся. Первое время протирал почаще, подкладывал лист A4 между экраном и клавиатурой. Потом просто надоело этим заниматься. По мне так это полная ерунда подкладывать листики или тряпочки. Плюнул и решил, будь что будет.
В итоге стало вот так. Экран довольно сильно протёрся за последние пару лет, когда ничего не подкладывал. И не сказать, что он какой-то прям сильно пыльный был. Я больше работал через внешний монитор и клавиатуру, нежели напрямую за ноутом. Но всё равно протёрлось сильно, так что работать за экраном ноута стало не очень комфортно. С другой стороны я им пользовался довольно активно. Считай, что каждый день носил с собой, доставал, убирал в рюкзак.
Так что имейте ввиду, если у вас тоже следы остаются. Если ничего не подкладывать, то наверное примерно то же самое будет. А может не будет, а тут просто поверхность экрана такая хреновая, что настолько сильно протёрлась. Ноут в рюкзаке ношу, по идее на него там давления никакого нет, но всё равно получил такой результат. На пластике под экраном тоже потёртости. Это не пыль и не следы от загрязнения. Ноут хорошенько протёр чистящим средством перед тем, как сфотографировать.
#железо
В итоге стало вот так. Экран довольно сильно протёрся за последние пару лет, когда ничего не подкладывал. И не сказать, что он какой-то прям сильно пыльный был. Я больше работал через внешний монитор и клавиатуру, нежели напрямую за ноутом. Но всё равно протёрлось сильно, так что работать за экраном ноута стало не очень комфортно. С другой стороны я им пользовался довольно активно. Считай, что каждый день носил с собой, доставал, убирал в рюкзак.
Так что имейте ввиду, если у вас тоже следы остаются. Если ничего не подкладывать, то наверное примерно то же самое будет. А может не будет, а тут просто поверхность экрана такая хреновая, что настолько сильно протёрлась. Ноут в рюкзаке ношу, по идее на него там давления никакого нет, но всё равно получил такой результат. На пластике под экраном тоже потёртости. Это не пыль и не следы от загрязнения. Ноут хорошенько протёр чистящим средством перед тем, как сфотографировать.
#железо
Знакомый попросил прикинуть небольшую инфраструктуру, чтобы развернуть self-hosted версию CRM Bitrix. Мы раньше с ним уже делали подобное, так что я собрал плюс-минус проверенный вариант, который успешно работал в прошлом. Да и сейчас наверное работает.
Чтобы добро не пропадало, решил и с вами поделиться. Кстати, если кто-то будет готов настроить подобное, напишите мне в личку, я сведу с заказчиком. У меня нет возможности всё это сейчас реализовать. Чего-то принципиально сложного тут нет. Надо просто всё аккуратно сделать.
Я предложил 2 сервера в аренду, если не надо HA (High Availability). Если надо HA, добавляется третий, но тут допустимо без него.
Арендуются 2 выделенных сервера под бюджет и потребности. Достаточно хотя бы двух дисков на каждом. Собираем там RAID1 на Mdadm, поверх ставим Proxmox VE. Тут же на гипервизоре настраиваем firewall, пробросы портов и NAT для виртуальных машин. Можно и в отдельной виртуалке шлюз сделать, но тут у нас простая история, можно и так.
🗄 На первый сервер ставим 3 виртуалки:
1️⃣ Прокси на базе Nginx/Angie в режиме proxy_pass. Весь HTTP трафик направляем туда и дальше раскидываем по сервисам. Всё остальное закрываем файрволом на гипервизорах. Если нужно ограничить доступ к инфраструктуре, тут же можно настроить VPN (WG или OpenVPN). Или вынести в отдельную виртуалку. Я обычно выношу, но не уверен, что в простых случаях это реально нужно. Немного переусложняет инфраструктуру, плодя дополнительные сущности.
2️⃣ VMBitrix. Тут будет работать сам Битрикс в своём стандартном окружении. Больше ничего ставить не рекомендую.
3️⃣ Виртуалка с бэкапом. Тут будет храниться локальная копия на уровне файлов и дампов субд (если по размеру пролезут, иначе бинарные бэкапы) для быстрого восстановления, если на VMBitrix что-то случится из-за червя, вируса или ошибки разработчика. На уровне виртуальных машин данные изолированы, так что зловред или ошибка не затронет их, зато можно быстро восстановиться. Резервные копии делать инкрементными. Я бы использовал rsync, но можно любое другое решение, не принципиально.
🗄Второй сервер используется под бэкапы, мониторинг и логи. Предлагаю такие виртуалки:
1️⃣ PBS (Proxmox Backup Server) для бэкапа на уровне виртуальных машин виртуалок с первого сервера. Думаю, имеет смысл бэкапить только прокси и VMBitrix.
2️⃣ Мониторинг на базе Zabbix, Prometheus, VictoriaMetrics. Не принципиально, что больше знает и любит исполнитель или тот, кто будет поддерживать.
3️⃣ Сбор и анализ логов, особенно с веб серверов (прокси и VMBitrix). Ну и все остальные тоже. Решение также на выбор исполнителя, кто что больше любит и знает: ELK, Loki, VictoriaLogs.
Отдельно где-то арендуется обычная VPS с большим диском и туда передаются бэкапы сырых данных с виртуалки с бэкапами на первом сервере. И туда же копируются все конфигурации, особенно мониторинга и логов. Сами данные этих сервисов в рамках данной задачи не представляют большой ценности, я бы не бэкапил.
Остаётся ещё вопрос хранения кода. Если будет активно идти разработка своими силами, то на первый сервер можно добавить отдельную виртуалку под Git и её тоже бэкапить в PBS.
Что думаете насчёт предложенной схемы? Как бы решали такую же задачу?
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#bitrix
Чтобы добро не пропадало, решил и с вами поделиться. Кстати, если кто-то будет готов настроить подобное, напишите мне в личку, я сведу с заказчиком. У меня нет возможности всё это сейчас реализовать. Чего-то принципиально сложного тут нет. Надо просто всё аккуратно сделать.
Я предложил 2 сервера в аренду, если не надо HA (High Availability). Если надо HA, добавляется третий, но тут допустимо без него.
Арендуются 2 выделенных сервера под бюджет и потребности. Достаточно хотя бы двух дисков на каждом. Собираем там RAID1 на Mdadm, поверх ставим Proxmox VE. Тут же на гипервизоре настраиваем firewall, пробросы портов и NAT для виртуальных машин. Можно и в отдельной виртуалке шлюз сделать, но тут у нас простая история, можно и так.
🗄 На первый сервер ставим 3 виртуалки:
🗄Второй сервер используется под бэкапы, мониторинг и логи. Предлагаю такие виртуалки:
Отдельно где-то арендуется обычная VPS с большим диском и туда передаются бэкапы сырых данных с виртуалки с бэкапами на первом сервере. И туда же копируются все конфигурации, особенно мониторинга и логов. Сами данные этих сервисов в рамках данной задачи не представляют большой ценности, я бы не бэкапил.
Остаётся ещё вопрос хранения кода. Если будет активно идти разработка своими силами, то на первый сервер можно добавить отдельную виртуалку под Git и её тоже бэкапить в PBS.
Что думаете насчёт предложенной схемы? Как бы решали такую же задачу?
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#bitrix
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
У Zabbix в Youtube канале вышло наглядное видео с демонстрацией основных возможностей системы мониторинга. Снято наглядно и информативно. Полезно для тех, кто не знаком с этой системой. А также, если вам необходимо кому-то показать и пояснить, что такое Zabbix и зачем его использовать:
▶️ Zabbix Technical Demo (В Я.Браузере можно с синхронным переводом посмотреть)
На видео показано и рассказано:
- Мониторинг Linux серверов с помощью агента и встроенного шаблона
- Мониторинг сетевых устройств с помощью SNMP
- Обзор готовых шаблонов и вариант создания своего
- Обзор сырых метрик в Latest Data
- Примеры дашбордов и виджетов для них
- Пример интерактивной карты сети
- Обзор мониторинга бизнес сервисов со SLA
- Создание отчётов по расписанию
- Возможности HA, Zabbix Proxy
- Настройка пользователей и групп, интеграция с LDAP, настройка ролей
- 2FA для аутентификации пользователей
Ещё раз уточню, что там просто по веб интерфейсу прошлись и показали основные возможности. По настройке там ничего нет. Для демонстрации использовалась версия 7.2.
У них есть старое видео в таком же ключе для версии 6.0. Ещё не успели на сайте заменить, до сих пор старое стоит:
⇨ https://www.zabbix.com/ru/demo
Хотя может и не будут заменять. Они дополняют друг друга. В старом больше теории и схем, а в новом только демонстрация веб интерфейса.
#zabbix
На видео показано и рассказано:
- Мониторинг Linux серверов с помощью агента и встроенного шаблона
- Мониторинг сетевых устройств с помощью SNMP
- Обзор готовых шаблонов и вариант создания своего
- Обзор сырых метрик в Latest Data
- Примеры дашбордов и виджетов для них
- Пример интерактивной карты сети
- Обзор мониторинга бизнес сервисов со SLA
- Создание отчётов по расписанию
- Возможности HA, Zabbix Proxy
- Настройка пользователей и групп, интеграция с LDAP, настройка ролей
- 2FA для аутентификации пользователей
Ещё раз уточню, что там просто по веб интерфейсу прошлись и показали основные возможности. По настройке там ничего нет. Для демонстрации использовалась версия 7.2.
У них есть старое видео в таком же ключе для версии 6.0. Ещё не успели на сайте заменить, до сих пор старое стоит:
⇨ https://www.zabbix.com/ru/demo
Хотя может и не будут заменять. Они дополняют друг друга. В старом больше теории и схем, а в новом только демонстрация веб интерфейса.
#zabbix
Please open Telegram to view this post
VIEW IN TELEGRAM
Коснулся на днях темы Bitrix и узнал некоторые подробности окружения, где его удобно запускать. Я последний раз разворачивал свежий Битрикс прошлым летом. И на тот момент компания предлагала автоматически развернуть окружение на базе системы Centos Stream 9, которую на практике в проде никто не использует. Я тогда удивился этому событию и собрал сам окружение на базе Debian 12.
Сейчас этот вопрос уже решён. Компания Битрикс представила рабочее окружение VMBitrix на базе следующих систем:
- Alma Linux 9
- CentOS Stream 9
- Oracle Linux 9
- Rocky Linux 9
Честно говоря, я ждал и надеялся, что будет переход на deb дистрибутивы, в частности Debian. Это упростит и поддержку отечественных систем, в частности Astra Linux, которая тоже на deb пакетах живёт. Но этого не случилось.
Если же вам нужно окружение именно на Debian, то можно собрать самостоятельно на базе их же свежей статьи:
⇨ Настройка окружения для Debian 12
Мне такое решение ближе, потому что в своей работе полностью перешёл на Debian, но тут есть подводные камни, особенно если работаете с внешними подрядчиками или нет взаимопонимания со своими разработчиками. Если начнутся какие-то проблемы, то у разработчиков будет большой соблазн обвинить сервер и окружение в частности в том, что там что-то не так настроено. Я с этим сталкивался лично не раз, поэтому несмотря на свои предпочтения, лучше разверну Битрикс в их же bitrix-env, чтобы просто снять с себя эти вопросы.
Окружение это доступно теперь в двух форматах:
1️⃣ Готовый образ VM под все популярные системы виртуализации: VirtualBox, VMWare, HyperV, Vagrant, ProxmoX (почему-то написан именно так, с заглавной X). Не рекомендую использовать образ VM. Когда что-то пойдёт не так или банально место на диске закончится (там 50 ГБ), столкнётесь с проблемами. Мне так по поводу Zabbix регулярно пишут. Разворачивают его из готового образа, а потом не знаю, что там с ним делать и как решать проблемы. Лучше установите чистую систему так, как вам нужно, и разверните из скрипта.
2️⃣ Скрипт bitrix-env-9.sh, который разворачивает окружение на вашем сервере. Я развернул и посмотрел на него на Rocky Linux. Выглядит установка вот так:
Установилось не с первой попытки. То один, то другой нужный пакет не мог загрузиться с зарубежных репозиториев. В итоге с 3-й попытки всё получилось. Ждём минут 10 и получаем преднастроенное окружение на базе следующих компонентов:
- Nginx + Apache2 + PHP 8.4
- Percona Server 8.4
- Redis или Memcached
- Поиск Sphinx
После установки достаточно создать пул в разделе 1. Create management pool on the server и скопировать в директорию
Я проверил на виртуалке с 1CPU и 2GB памяти. Тестовый ненагруженный портал нормально установился и запустился.
В целом, всё осталось плюс-минус как и раньше, ещё лет 10 или более назад, только на актуальном ПО. Принципиальных изменений нет. У Битрикса всё стабильно. Корпоративный портал содержит 211 тысяч файлов 😱 Развернул из любопытства демо версию.
#bitrix
Сейчас этот вопрос уже решён. Компания Битрикс представила рабочее окружение VMBitrix на базе следующих систем:
- Alma Linux 9
- CentOS Stream 9
- Oracle Linux 9
- Rocky Linux 9
Честно говоря, я ждал и надеялся, что будет переход на deb дистрибутивы, в частности Debian. Это упростит и поддержку отечественных систем, в частности Astra Linux, которая тоже на deb пакетах живёт. Но этого не случилось.
Если же вам нужно окружение именно на Debian, то можно собрать самостоятельно на базе их же свежей статьи:
⇨ Настройка окружения для Debian 12
Мне такое решение ближе, потому что в своей работе полностью перешёл на Debian, но тут есть подводные камни, особенно если работаете с внешними подрядчиками или нет взаимопонимания со своими разработчиками. Если начнутся какие-то проблемы, то у разработчиков будет большой соблазн обвинить сервер и окружение в частности в том, что там что-то не так настроено. Я с этим сталкивался лично не раз, поэтому несмотря на свои предпочтения, лучше разверну Битрикс в их же bitrix-env, чтобы просто снять с себя эти вопросы.
Окружение это доступно теперь в двух форматах:
# dnf install wget
# wget https://repo.bitrix.info/dnf/bitrix-env-9.sh
# chmod +x bitrix-env-9.sh
# ./bitrix-env-9.sh
Установилось не с первой попытки. То один, то другой нужный пакет не мог загрузиться с зарубежных репозиториев. В итоге с 3-й попытки всё получилось. Ждём минут 10 и получаем преднастроенное окружение на базе следующих компонентов:
- Nginx + Apache2 + PHP 8.4
- Percona Server 8.4
- Redis или Memcached
- Поиск Sphinx
После установки достаточно создать пул в разделе 1. Create management pool on the server и скопировать в директорию
/home/bitrix/www
скрипт bitrixsetup.php для установки новой версии продукта, либо восстановить его из бэкапа. Я проверил на виртуалке с 1CPU и 2GB памяти. Тестовый ненагруженный портал нормально установился и запустился.
В целом, всё осталось плюс-минус как и раньше, ещё лет 10 или более назад, только на актуальном ПО. Принципиальных изменений нет. У Битрикса всё стабильно. Корпоративный портал содержит 211 тысяч файлов 😱 Развернул из любопытства демо версию.
#bitrix
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
У меня в управлении есть небольшая серверная на несколько серверов. Там очень давно трудится APC Smart-UPS 2200. Больше всего люблю УПСы именно этого бренда. Ниже расскажу, почему. Но сейчас они стали очень дорогими, и качество упало, так что покупать их перестали.
Ему уже 2 раза меняли батареи. Пришло время очередной замены. Я без задних мыслей заказал совместимую модель батареи - RBC11. В этот раз это был не оригинал, потому что он очень дорогой, да и с наличием плохо, предлагают под заказ. А совместимые копии в 2 раза дешевле и есть в наличии. Оригинальные работали по 5-6 лет, посмотрим, сколько эти проживут.
Батареи приехали с другими разъёмами. Не подходили к тем, что есть на UPS. На вид почти такие же, но с небольшими отличиями и не лезут. Не знаю, с чем это связано. Может быть с тем, что UPS очень старый. Сам он пишет в статусе, что от 2009 года. Я собственно, поэтому и решил написать заметку, чтобы тот, кто будет покупать батареи имел ввиду, что разъёмы могут не подойти.
Особых проблем в итоге это не доставило, так как очень легко получилось перекинуть провода со старых батарей на новые. Подозреваю, что это может лишить гарантии. Но деваться некуда. Так что заранее уточняйте, подойдут ли разъёмы батареи к вашему УПСу.
Теперь по поводу APC. Я всегда заказывал их из-за софта apcupsd. Это кроссплатформенная программа, которая поддерживает все популярные операционные системы и может работать в режиме сервер-клиент.
Мы берём UPS, подключаем его по USB порту к любому серверу. Я обычно беру с Linux. Настраиваем на нём режим сервера. На всех остальных серверах, подключенных к этому УПСу ставим приложение-клиент, которое берёт статус УПСа по сети. Если пропадает электричество, все сервера корректно завершают свою работу.
Apcupsd легко настраивается и переносится с системы на систему. Там всего лишь один конфигурационный файл для сервера и клиента. Никакие драйвера отдельно ставить не надо. По крайней мере с УПСами по USB я проблем не испытывал и никаких дополнительных действий не делал.
Предложенная программа лично мне нравится намного больше вендорского софта. Она и настраивается проще, и работает надёжнее. Последний раз, где я участвовал, покупали какие-то другие УПСы, уже не помню какие. Там другой софт был, вообще не понравился. По веб интерфейсу надо лазить, кучу всего менять. Сам софт тяжелый, громоздкий. Вообще не то после apcupsd, который ставится из стандартных репозиториев и весит копейки.
После замены батарей запустил утилиту в комплекте
- выполнил самодиагностику, убедился, что всё в порядке
- установил дату батареи на день замены
- выполнил калибровку батареи
В процессе калибровки нагрузка работала от батарей. Длилась калибровка минут 40-50, то есть батареи держали хорошо. К УПСу подключены два 1U сервера и два 2U, работают без особой нагрузки. Плюс несколько свитчей. Очень простая и надёжная железка. Жаль, что это качество APC уже давно сошло на нет. А вместе с ростом цены наоборот упало.
Программа apcupsd поддерживает УПСы не только APC, но и некоторых других вендоров. Например, некоторые модели Ippon. Если будете подбирать себе серверный УПС, рекомендую обратить внимание на этот софт и если есть возможность, купите совместимый с ней UPS. Это упростит вам настройку и поддержку работы.
#железо
Ему уже 2 раза меняли батареи. Пришло время очередной замены. Я без задних мыслей заказал совместимую модель батареи - RBC11. В этот раз это был не оригинал, потому что он очень дорогой, да и с наличием плохо, предлагают под заказ. А совместимые копии в 2 раза дешевле и есть в наличии. Оригинальные работали по 5-6 лет, посмотрим, сколько эти проживут.
Батареи приехали с другими разъёмами. Не подходили к тем, что есть на UPS. На вид почти такие же, но с небольшими отличиями и не лезут. Не знаю, с чем это связано. Может быть с тем, что UPS очень старый. Сам он пишет в статусе, что от 2009 года. Я собственно, поэтому и решил написать заметку, чтобы тот, кто будет покупать батареи имел ввиду, что разъёмы могут не подойти.
Особых проблем в итоге это не доставило, так как очень легко получилось перекинуть провода со старых батарей на новые. Подозреваю, что это может лишить гарантии. Но деваться некуда. Так что заранее уточняйте, подойдут ли разъёмы батареи к вашему УПСу.
Теперь по поводу APC. Я всегда заказывал их из-за софта apcupsd. Это кроссплатформенная программа, которая поддерживает все популярные операционные системы и может работать в режиме сервер-клиент.
Мы берём UPS, подключаем его по USB порту к любому серверу. Я обычно беру с Linux. Настраиваем на нём режим сервера. На всех остальных серверах, подключенных к этому УПСу ставим приложение-клиент, которое берёт статус УПСа по сети. Если пропадает электричество, все сервера корректно завершают свою работу.
Apcupsd легко настраивается и переносится с системы на систему. Там всего лишь один конфигурационный файл для сервера и клиента. Никакие драйвера отдельно ставить не надо. По крайней мере с УПСами по USB я проблем не испытывал и никаких дополнительных действий не делал.
Предложенная программа лично мне нравится намного больше вендорского софта. Она и настраивается проще, и работает надёжнее. Последний раз, где я участвовал, покупали какие-то другие УПСы, уже не помню какие. Там другой софт был, вообще не понравился. По веб интерфейсу надо лазить, кучу всего менять. Сам софт тяжелый, громоздкий. Вообще не то после apcupsd, который ставится из стандартных репозиториев и весит копейки.
После замены батарей запустил утилиту в комплекте
apctest
, выполнил тут же в консоли несколько действий:- выполнил самодиагностику, убедился, что всё в порядке
- установил дату батареи на день замены
- выполнил калибровку батареи
В процессе калибровки нагрузка работала от батарей. Длилась калибровка минут 40-50, то есть батареи держали хорошо. К УПСу подключены два 1U сервера и два 2U, работают без особой нагрузки. Плюс несколько свитчей. Очень простая и надёжная железка. Жаль, что это качество APC уже давно сошло на нет. А вместе с ростом цены наоборот упало.
Программа apcupsd поддерживает УПСы не только APC, но и некоторых других вендоров. Например, некоторые модели Ippon. Если будете подбирать себе серверный УПС, рекомендую обратить внимание на этот софт и если есть возможность, купите совместимый с ней UPS. Это упростит вам настройку и поддержку работы.
#железо
В Debian есть интересная библиотека libeatmydata, которая подменяет системные вызовы fsync, fdatasync, sync и некоторые другие на пустышки. Эти команды сразу выдают положительный результат, ничего не делая. То есть не работает подтверждение записи на диск.
Это существенно ускоряет все операции записи, но и, что логично, создаёт вероятность потери данных, так как реально они залетают в кэш, а не на диск. И будут записаны в зависимости от настроек и параметров системы, когда ядро посчитает нужным выполнить синхронизацию: по таймеру фоновой синхронизации или недостатка свободной оперативной памяти.
Работает это примерно так:
Реально там ещё пару проверок с if, но по сути всё так и есть для всех системных вызовов, что она она перехватывает.
Эту возможность без особых опасений можно использовать во временных или тестовых средах, где не важна сохранность данных. Причём сделать это очень просто. Ставим пакет:
Запускаем через него любую команду. Я протестировал на старой виртуалке, которую давно не обновляли. Сделал запуск обновления без eatmydata и с ней. Разница получилась заметной.
Напомню, что реальной установкой пакетов занимается утилита
Я выполнил полное обновление пакетов в два этапа, откатив первое обновление на изначальный снепшот:
Работа dpkg занимает где-то треть всего времени, ещё треть загрузка пакетов, и треть пересборка initramfs. Без eatmydata dpkg работала примерно 30 секунд, с ней – 20.
Или вот ещё более наглядный тест. Запускаем создание файла в режиме синхронизации и подтверждения записи каждого блока:
И то же самое через eatmydata:
Эта возможность может пригодиться при сборке контейнеров, образов, раскатки тестовых сред. Можно запускать тестовую СУБД через eatmydata. Да всё, что угодно на тестовом сервере.
Если у вас есть какие-то скрипты, которые не хочется переделывать, добавляя в начало каждой команды eatmydata, можете просто задать переменную окружения, в том числе глобальную в
И все процессы будут писать без подтверждения записи в кэш.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#linux
Это существенно ускоряет все операции записи, но и, что логично, создаёт вероятность потери данных, так как реально они залетают в кэш, а не на диск. И будут записаны в зависимости от настроек и параметров системы, когда ядро посчитает нужным выполнить синхронизацию: по таймеру фоновой синхронизации или недостатка свободной оперативной памяти.
Работает это примерно так:
int fsync(int fd) {
return 0;
}
Реально там ещё пару проверок с if, но по сути всё так и есть для всех системных вызовов, что она она перехватывает.
Эту возможность без особых опасений можно использовать во временных или тестовых средах, где не важна сохранность данных. Причём сделать это очень просто. Ставим пакет:
# apt install eatmydata
Запускаем через него любую команду. Я протестировал на старой виртуалке, которую давно не обновляли. Сделал запуск обновления без eatmydata и с ней. Разница получилась заметной.
Напомню, что реальной установкой пакетов занимается утилита
dpkg
, а не apt
. Dpkg для надёжности выполняет все действия с подтверждением записи. Так что если запустить её через eatmydata, она отработает гораздо быстрее. Я выполнил полное обновление пакетов в два этапа, откатив первое обновление на изначальный снепшот:
# time apt upgrade -y
Fetched 249 MB in 30s (8,183 kB/s)
real 1m 43.690s
# time eatmydata apt upgrade -y
Fetched 249 MB in 33s (7,671 kB/s)
real 1m 36.984s
Работа dpkg занимает где-то треть всего времени, ещё треть загрузка пакетов, и треть пересборка initramfs. Без eatmydata dpkg работала примерно 30 секунд, с ней – 20.
Или вот ещё более наглядный тест. Запускаем создание файла в режиме синхронизации и подтверждения записи каждого блока:
# dd if=/dev/zero of=/mnt/tempfile bs=1M count=512 oflag=dsync
536870912 bytes (537 MB, 512 MiB) copied, 1.95211 s, 275 MB/s
И то же самое через eatmydata:
# eatmydata dd if=/dev/zero of=/mnt/tempfile bs=1M count=512 oflag=dsync
536870912 bytes (537 MB, 512 MiB) copied, 0.343773 s, 1.6 GB/s
Эта возможность может пригодиться при сборке контейнеров, образов, раскатки тестовых сред. Можно запускать тестовую СУБД через eatmydata. Да всё, что угодно на тестовом сервере.
Если у вас есть какие-то скрипты, которые не хочется переделывать, добавляя в начало каждой команды eatmydata, можете просто задать переменную окружения, в том числе глобальную в
/etc/environment
:LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libeatmydata.so
И все процессы будут писать без подтверждения записи в кэш.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#linux
Открытый практикум Linux by Rebrain: Знакомство с LVM
После регистрации мы отправим вам подарок! Вы сможете найти его в ответном письме.
👉 Регистрация
Время проведения:
7 мая (среда), 20:00 по МСК
Программа практикума:
▪️Старый подход к разметке пространства. Чем он плох?
▫️Базовые понятия о файловой системе
▪️Основы LVM
Кто ведёт?
Андрей Буранов — специалист по UNIX-системам в компании VK, входит в топ 3 лучших преподавателей образовательных порталов. 10+ лет опыта работы с ОС Linux и 8+ лет опыта преподавания.
Бесплатные практикумы по DevOps, Linux, Networks и Golang от REBRAIN каждую неделю. Подключайтесь!
Реклама. ООО "РЕБРЕИН", ИНН: 7727409582, erid: 2W5zFGwYtnC
После регистрации мы отправим вам подарок! Вы сможете найти его в ответном письме.
👉 Регистрация
Время проведения:
7 мая (среда), 20:00 по МСК
Программа практикума:
▪️Старый подход к разметке пространства. Чем он плох?
▫️Базовые понятия о файловой системе
▪️Основы LVM
Кто ведёт?
Андрей Буранов — специалист по UNIX-системам в компании VK, входит в топ 3 лучших преподавателей образовательных порталов. 10+ лет опыта работы с ОС Linux и 8+ лет опыта преподавания.
Бесплатные практикумы по DevOps, Linux, Networks и Golang от REBRAIN каждую неделю. Подключайтесь!
Реклама. ООО "РЕБРЕИН", ИНН: 7727409582, erid: 2W5zFGwYtnC
Хочу обсудить с вами одну тему, так как думаю, она актуальна для многих читателей и в том числе для меня лично. По статистике сайта и ВК аудитория 35+ преобладает над всеми остальными. Это более 50% всех читателей. В TG нет такой статистики, но думаю, что она схожа.
Навеяло тему вот это видео:
⇨ Университет пережиток прошлого? Нужен ли вуз DevOps да и любому айтишнику.
В целом, я согласен со всеми доводами автора. Если кратко, то он за образование в ВУЗе практически во всех ситуациях. Это будет только польза, даже если не доучиться. Но с другой стороны у меня есть много примеров, когда по большому счёту очное вузовское образование и не нужно было.
1️⃣ Приведу первый свежий пример, который меня заставил в своё время призадуматься. Один знакомый, далёкий от айти, попросил совета по поводу сына. У него сын учился в 10-м классе. Самостоятельно увлёкся программированием. Сам обучался, освоил неплохо. Начал работать и зарабатывать приличные деньги. Стал писать софт под iOS. Уже в начале 11-го класса одними подработками он получал доход больше отца и полностью сам себя обеспечивал.
Собственно, отец ко мне и обратился с советом, как быть. Сын не хотел поступать в ВУЗ, а хотел продолжать учёбу по теме программирования и работать. А отец переживал, что сейчас врубят санкции, iOS заблокируют и сын останется ни с чем – без работы и без образования. Он не понимал, что это универсальный навык . Научившись реальному программированию, сын без работы уже не останется.
Я только успокоил, что переживать смысла нет. А что насчёт ВУЗа, не знаю. Да, лучше, наверное, отучиться, но насильно не заставишь, когда человек уже познал вкус заработка. К тому же есть явное увлечение своей деятельностью, способность к самообразованию, раз он сам всё освоил и развивается. Думаю, в таком случае продуктивнее реально начать работать, учиться где-то на специальных курсах, чтобы углубить свои навыки, и ВУЗ заканчивать заочно. Мне кажется, это будет более продуктивно, нежели идти на дневное обучение на 5,5 лет. Работать полноценно не получится. Я сам работал, знаю это. Да и по теме современной разработки он вряд ли что-то в ВУЗе узнает.
2️⃣ Второй пример – мой хороший знакомый. Пошёл куда-то учиться, с первого курса вылетел. Попал в армию. Пришёл из армии, начал самостоятельно осваивать 1С. Через некоторое время устроился программистом на небольшую зарплату. Так и раскрутился, стал нормальным 1С программистом. Неплохо зарабатывает этим на жизнь. Уже по ходу работы отучился где-то для корочки заочно да и всё. Возникает закономерный вопрос, нужен ли был ему ВУЗ, чтобы стать программистом 1С?
Я в итоге думаю так. Если нет каких-то особых событий в жизни, ребёнок планово учится в школе, ещё толком не знает, чем будет заниматься, но есть склонности к IT, то стоит идти, как и большинство, в ВУЗ. А если есть какие-то явные таланты, стремления, что человек в школе уже работает и зарабатывает, то можно отойти от этой линии и придумать какой-то альтернативный вариант. И та же история с приятелем. Если уж не получилось в своё время закончить ВУЗ, то можно не цепляться за очное обучение, а искать какие-то другие варианты. А корочку всегда можно заочно получить. Сейчас это вообще очень просто делается. Куча ВУЗов работают только на это – платишь деньги, платишь за написание диплома и спокойно получаешь корочку какого-то проходного заведения.
Что думаете по этому поводу? Особенно интересно мнение тех, у кого дети сейчас 15-16 лет и остро стоит подобный вопрос.
#дети
Навеяло тему вот это видео:
⇨ Университет пережиток прошлого? Нужен ли вуз DevOps да и любому айтишнику.
В целом, я согласен со всеми доводами автора. Если кратко, то он за образование в ВУЗе практически во всех ситуациях. Это будет только польза, даже если не доучиться. Но с другой стороны у меня есть много примеров, когда по большому счёту очное вузовское образование и не нужно было.
Собственно, отец ко мне и обратился с советом, как быть. Сын не хотел поступать в ВУЗ, а хотел продолжать учёбу по теме программирования и работать. А отец переживал, что сейчас врубят санкции, iOS заблокируют и сын останется ни с чем – без работы и без образования. Он не понимал, что это универсальный навык . Научившись реальному программированию, сын без работы уже не останется.
Я только успокоил, что переживать смысла нет. А что насчёт ВУЗа, не знаю. Да, лучше, наверное, отучиться, но насильно не заставишь, когда человек уже познал вкус заработка. К тому же есть явное увлечение своей деятельностью, способность к самообразованию, раз он сам всё освоил и развивается. Думаю, в таком случае продуктивнее реально начать работать, учиться где-то на специальных курсах, чтобы углубить свои навыки, и ВУЗ заканчивать заочно. Мне кажется, это будет более продуктивно, нежели идти на дневное обучение на 5,5 лет. Работать полноценно не получится. Я сам работал, знаю это. Да и по теме современной разработки он вряд ли что-то в ВУЗе узнает.
Я в итоге думаю так. Если нет каких-то особых событий в жизни, ребёнок планово учится в школе, ещё толком не знает, чем будет заниматься, но есть склонности к IT, то стоит идти, как и большинство, в ВУЗ. А если есть какие-то явные таланты, стремления, что человек в школе уже работает и зарабатывает, то можно отойти от этой линии и придумать какой-то альтернативный вариант. И та же история с приятелем. Если уж не получилось в своё время закончить ВУЗ, то можно не цепляться за очное обучение, а искать какие-то другие варианты. А корочку всегда можно заочно получить. Сейчас это вообще очень просто делается. Куча ВУЗов работают только на это – платишь деньги, платишь за написание диплома и спокойно получаешь корочку какого-то проходного заведения.
Что думаете по этому поводу? Особенно интересно мнение тех, у кого дети сейчас 15-16 лет и остро стоит подобный вопрос.
#дети
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Университет пережиток прошлого? Нужен ли вуз DevOps да и любому айтишнику.
Надежный хостинг FirstVDS! Переходи по ссылке и получай скидку 25% на первый месяц на любой тариф https://firstvds.ru/s/02p3j
Если ты задумался войти в АйТи или уже работаешь DevOps инженером, программистом, тестировщиком и т.д., у тебя явно возникает вопрос…
Если ты задумался войти в АйТи или уже работаешь DevOps инженером, программистом, тестировщиком и т.д., у тебя явно возникает вопрос…
🔝 ТОП постов за прошедший месяц. Все самые популярные публикации по месяцам можно почитать со соответствующему хэштэгу #топ. Отдельно можно посмотреть ТОП за прошлые года: 2023 и 2024.
В праздники отдых и не занимался делами, но ТОП решил не пропускать. Не люблю, когда отлаженная система или порядок нарушаются, поэтому публикую. Да и постов много было интересных. Если кто не читал, рекомендую.
Пользуясь случаем, хочу попросить проголосовать за мой канал, так как это открывает некоторые дополнительные возможности по настройке: https://t.me/boost/srv_admin.
📌 Больше всего пересылок:
◽️Управление сохранёнными паролями в Windows (694)
◽️Подборка bash скриптов с канала (684)
◽️Как Windows определяет наличие интернета (574)
◽️Nginx UI для управления конфигурацией в браузере (517)
📌 Больше всего комментариев:
◽️Про высшее образование в IT (350)
◽️Выбор вентиляторов для системного блока (326)
◽️Вопросы на собеседованиях по базе (216)
◽️Ночные дежурства и переработки (135)
📌 Больше всего реакций:
◽️Как Windows определяет наличие интернета (385)
◽️Ночные дежурства и переработки (320)
◽️Управление сохранёнными паролями в Windows (297)
📌 Больше всего просмотров:
◽️Шутка на 1-е апреля про сисадминов (13448)
◽️Игра You're the OS! (10877)
◽️Управление сохранёнными паролями в Windows (10185)
#топ
В праздники отдых и не занимался делами, но ТОП решил не пропускать. Не люблю, когда отлаженная система или порядок нарушаются, поэтому публикую. Да и постов много было интересных. Если кто не читал, рекомендую.
Пользуясь случаем, хочу попросить проголосовать за мой канал, так как это открывает некоторые дополнительные возможности по настройке: https://t.me/boost/srv_admin.
📌 Больше всего пересылок:
◽️Управление сохранёнными паролями в Windows (694)
◽️Подборка bash скриптов с канала (684)
◽️Как Windows определяет наличие интернета (574)
◽️Nginx UI для управления конфигурацией в браузере (517)
📌 Больше всего комментариев:
◽️Про высшее образование в IT (350)
◽️Выбор вентиляторов для системного блока (326)
◽️Вопросы на собеседованиях по базе (216)
◽️Ночные дежурства и переработки (135)
📌 Больше всего реакций:
◽️Как Windows определяет наличие интернета (385)
◽️Ночные дежурства и переработки (320)
◽️Управление сохранёнными паролями в Windows (297)
📌 Больше всего просмотров:
◽️Шутка на 1-е апреля про сисадминов (13448)
◽️Игра You're the OS! (10877)
◽️Управление сохранёнными паролями в Windows (10185)
#топ
Telegram
ServerAdmin.ru
🎄🔝 Под конец года имеет смысл подвести некоторые итоги. В повседневной жизни я не привык это делать. Обычно только доходы/расходы анализирую. А вот в разрезе канала было интересно посмотреть итоги.
Я подготовил ТОП публикаций за прошедший год. Это было…
Я подготовил ТОП публикаций за прошедший год. Это было…
🐳❓ Хотите стать экспертом по Docker и микросервисам? Освойте ключевые навыки для разработки, упаковки и развертывания приложений с Docker-образами!
⏰ На открытом вебинаре 13 мая в 20:00 мск мы разберём, как эффективно использовать Docker для контейнеризации и автоматизации процессов развертывания микросервисов. Вы познакомитесь с принципами создания и оптимизации Docker-образов, а также с лучшими практиками DevOps и CI/CD.
Умение использовать Docker для автоматизации и управления микросервисами сделает вас более конкурентоспособным на рынке труда. Получите знания, которые востребованы в крупных компаниях.
👉 Регистрируйтесь на открытый урок и получите скидку на программу обучения «DevOps-практики и инструменты»: https://clck.ru/3Lr69Q
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
⏰ На открытом вебинаре 13 мая в 20:00 мск мы разберём, как эффективно использовать Docker для контейнеризации и автоматизации процессов развертывания микросервисов. Вы познакомитесь с принципами создания и оптимизации Docker-образов, а также с лучшими практиками DevOps и CI/CD.
Умение использовать Docker для автоматизации и управления микросервисами сделает вас более конкурентоспособным на рынке труда. Получите знания, которые востребованы в крупных компаниях.
👉 Регистрируйтесь на открытый урок и получите скидку на программу обучения «DevOps-практики и инструменты»: https://clck.ru/3Lr69Q
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
После прошлой истории с ddos захотелось проработать какое-то готовое универсальное решение, чтобы можно было его быстро применить, а не придумывать разные способы. В комментариях люди писали, что надо было установить fail2ban, какой-нибудь WAF или что-то в этом роде. Это всё слабо поможет, если идёт большая нагрузка. Fail2ban сразу мимо, забываем про него. А WAF или какой-то фильтрующий сервер надо настраивать заранее, а не когда у вас единственную машину ддосят.
Я взял наиболее простой и быстрый с точки зрения производительности вариант: ipset + iptables. Если ваш канал и сервер в целом вывозят нагрузку и вас не блокирует провайдер, указанная связка будет наиболее лёгкой и эффективной с точки зрения потребления ресурсов.
Сначала хотел что-то простое набросать, но потом всё расширял и расширял возможности. В итоге родился довольно большой bash скрипт с некоторыми проверками и логированием. Рассказываю, что он делает:
1️⃣ Проверяет установку ipset, создаёт списки.
2️⃣ Проверяет установку rsyslog, чтобы логировать заблокированные подключения. Это нужно на момент отладки и в обычное время, когда нет ддоса. Если начали ддосить, логирование надо отключить.
3️⃣ Создаёт конфигурацию rsyslog для хранения логов в отдельных файлах. Настраивает ротацию через logrotate.
4️⃣ Дальше идут переменные, касающиеся правил iptables: имя и ip адрес WAN интерфейса, белый список IP, с которых разрешено всё, разрешённые TCP и UDP порты, на которые мы принимаем соединения. Всё остальное блокируем.
5️⃣ Дальше идут наборы правил:
- очистка всех правил
- запрет всего, что не разрешено явно
- разрешаем установленные соединения
- разрешаем localhost и icmp
- разрешаем исходящие соединения сервера
- разрешаем все соединения от белого списка
- блокируем неопознанные и нулевые пакеты
- блокируем новые соединения без статуса NEW
- блокируем списки ipset, которые формируются ниже
- добавляем в список тех, кто открывает более 10-ти соединений с сервером в течении секунды, логируем таких товарищей
- разрешаем доступ к открытым портам, в данном примере это порты 80, 443 TCP и 443 UDP
- тех, кто обращается к другим портам, добавляем в список ipset
- сохраняю все правила в файл
Сразу скажу, что я не занимался плотной отладкой этого набора правил в реальной ситуации. Набросал правила на основе своего опыта и протестировал в ручном режиме. Под реальной нагрузкой и спамом запросов не проверял.
Для проверки работы надо установить на сервере iptables, ipset, rsyslog:
Скопировать и заполнить переменные в bash скрипте. Особое внимание уделить переменным WAN, WAN_IP, WLIST, WPORT_TCP, WPORT_UDP. На основе них будут сформированы правила iptables. Отдельного правила для SSH я не делал. Подразумевается, что подключаться куда-либо кроме открытых 80 и 443 портов можно только из списка WLIST. Туда можно добавлять IP адреса или подсети через запятую.
После выполнения скрипта, смотрим правила iptables:
Проверял работу так. Установил веб сервер. Попробовал с другой машины подключиться к серверу через telnet на любой отличный от HTTP порт:
Получил бан с занесением в список BANPORT. Смотреть этот список так:
Далее установил ab и попробовал спам запросов в 50 потоков к веб серверу:
Получил бан с занесением в список BANDDOS. Оба бана были отражены в лог файлах
⚡️На работающем сервере запускать такие скрипты не рекомендую, особенно если нет доступа к консоли. Сначала проверьте и отладьте на тестовой виртуалке. Убедитесь, что не отрубаете себе доступ. В целом, тут небольшой и относительно простой набор правил.
⇨ Забрать скрипт iptables.sh
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#iptables #ipset #ddos
Я взял наиболее простой и быстрый с точки зрения производительности вариант: ipset + iptables. Если ваш канал и сервер в целом вывозят нагрузку и вас не блокирует провайдер, указанная связка будет наиболее лёгкой и эффективной с точки зрения потребления ресурсов.
Сначала хотел что-то простое набросать, но потом всё расширял и расширял возможности. В итоге родился довольно большой bash скрипт с некоторыми проверками и логированием. Рассказываю, что он делает:
- очистка всех правил
- запрет всего, что не разрешено явно
- разрешаем установленные соединения
- разрешаем localhost и icmp
- разрешаем исходящие соединения сервера
- разрешаем все соединения от белого списка
- блокируем неопознанные и нулевые пакеты
- блокируем новые соединения без статуса NEW
- блокируем списки ipset, которые формируются ниже
- добавляем в список тех, кто открывает более 10-ти соединений с сервером в течении секунды, логируем таких товарищей
- разрешаем доступ к открытым портам, в данном примере это порты 80, 443 TCP и 443 UDP
- тех, кто обращается к другим портам, добавляем в список ipset
- сохраняю все правила в файл
Сразу скажу, что я не занимался плотной отладкой этого набора правил в реальной ситуации. Набросал правила на основе своего опыта и протестировал в ручном режиме. Под реальной нагрузкой и спамом запросов не проверял.
Для проверки работы надо установить на сервере iptables, ipset, rsyslog:
# apt install iptables ipset rsyslog
Скопировать и заполнить переменные в bash скрипте. Особое внимание уделить переменным WAN, WAN_IP, WLIST, WPORT_TCP, WPORT_UDP. На основе них будут сформированы правила iptables. Отдельного правила для SSH я не делал. Подразумевается, что подключаться куда-либо кроме открытых 80 и 443 портов можно только из списка WLIST. Туда можно добавлять IP адреса или подсети через запятую.
После выполнения скрипта, смотрим правила iptables:
# iptables -L -v -n
Проверял работу так. Установил веб сервер. Попробовал с другой машины подключиться к серверу через telnet на любой отличный от HTTP порт:
# telnet 85.143.173.182 23
Получил бан с занесением в список BANPORT. Смотреть этот список так:
# ipset -L BANPORT
Далее установил ab и попробовал спам запросов в 50 потоков к веб серверу:
# ab -c 50 -n 30000 "http://85.143.173.182/"
Получил бан с занесением в список BANDDOS. Оба бана были отражены в лог файлах
ipset_portscan.log
и ipset_ddos.log
. При этом если ничего из описанного выше не делать, а просто ходить на веб сайт, доступ открыт, всё работает нормально.⚡️На работающем сервере запускать такие скрипты не рекомендую, особенно если нет доступа к консоли. Сначала проверьте и отладьте на тестовой виртуалке. Убедитесь, что не отрубаете себе доступ. В целом, тут небольшой и относительно простой набор правил.
⇨ Забрать скрипт iptables.sh
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#iptables #ipset #ddos
Please open Telegram to view this post
VIEW IN TELEGRAM
Почтовый сервер 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 local
backupmail.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 Дальше вам нужно...