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

Я некоторое время интересовался докером, но еще не прыгнул. Мне нужно настроить почтовый сервер, поэтому я подумал, что могу использовать это как причину, чтобы узнать больше о 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? Или некоторые контейнеры должны быть общими?

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

2 ответов


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

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


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

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

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

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

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

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

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

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