Подтвердить что ты не робот

Использование Docker для почтового сервера

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

Я установил почтовый сервер на VPS раньше, но не в несколько контейнеров. Я бы хотел установить Postfix, Dovecot, MySQL или Postgresql и SpamAssassin, как описано здесь:

https://www.digitalocean.com/community/tutorials/how-to-configure-a-mail-server-using-postfix-dovecot-mysql-and-spamassasin

Однако, что было бы хорошим способом докеретировать его? Разве я просто поместил бы все в один контейнер? Или было бы лучше иметь MySQL в одном контейнере, Postfix в другом и дополнительные контейнеры для Dovecot и SpamAssassin? Или должны быть разделены некоторые контейнеры?

Есть ли HOWTO для установки почтового сервера с помощью докеров? Если есть, я еще не нашел его.

4b9b3361

Ответ 1

Точка Docker не является контейнеризацией ради танкирования. Он должен объединить вещи, которые принадлежат друг другу, и отдельные вещи, которые не принадлежат друг другу.

Учитывая это, способ, которым я это задал, - это контейнер для базы данных MySql и другой контейнер для всех почтовых компонентов. Компоненты почты обычно интегрируются друг с другом, вызывая друг друга в исполняемых файлах или путем чтения/записи общих файлов, поэтому нет смысла разделить их в отдельных контейнерах. Поскольку база данных также может использоваться для других целей, а связь с ней выполняется через сокет, для нее более разумно быть отдельным контейнером.

Ответ 2

Dovecot, Spamassassin и др. могут отправляться в отдельные контейнеры в постфикс. Используйте LMTP для соединений, и все будет работать. Это очень практично.

Теперь за идеологический бит. Если вы действительно хотели сделать "путь докеров", как бы это выглядело.

Postfix сложный. Это не один демон, а кластер разных демонов, которые разговаривают друг с другом и выполняют разные части задач обработки почты. Некоторое взаимодействие между этими компонентами-демонами осуществляется через файлы (например, почтовые очереди), некоторые из них через сокеты, а некоторые - через сигналы.

При запуске postfix вы действительно запускаете "мастер", который затем запускает другие процессы-демоны, которые ему нужны, используя правила в master.cf.

Регистрация в этом сценарии особенно сложна. Все разные демоны независимо регистрируются в /dev/log, и на самом деле нет способа обработать эти журналы, не помещая демона syslog внутри контейнера. "Не путь докеров!"

В принципе, разделение функциональности в postfix очень похоже на подход к микросервису, но он не основан на контейнеризации. Невозможно разделить различные службы на разные контейнеры под докером, и даже если бы вы могли, зависимость от сигналов была проблематичной.

Я предполагаю, что можно было бы реорганизовать демона "мастер", предоставив ему доступ к процессу докеров в хосте (или запустить докер в докере), и, таким образом, этот новый мастер-демон мог бы координировать различные службы в отдельные контейнеры. Мы можем предположить, но я не слышал, чтобы кто-то двигался по этому вопросу в качестве реального проекта.

Это оставляет нам более вероятный вариант выбора более контейнерного демона, чем постфикс для использования в докере. Я использую постфикс более или менее исключительно в течение прошлого десятилетия, и у меня не было повода для рассмотрения вариантов до сих пор. Мне было бы очень интересно, если кто-нибудь сможет добавить комментарий к возможностям более удобных для MTA опций, доступных для докеров?