Alpine based postfix image with ssl/tls included
8.5K
Автоматически настраивает SSL/TLS с генерируя самоподписанный сертификат при запуске. Есть возможность использовать свои сертификаты.
Переменные окружения используемые контейнером:
POSTFIX_EMAIL_HOST (required): Основной почтовый домен для postfix. Используется в качестве CN для самоподписанного сертификата.
POSTFIX_ADDITIONAL_DOMAINS: дополнительные почтовые домены для postfix. Используются в качестве Alt Names для самоподписанного сертификата.
Контейнер при запуске проверяет наличие сертифкатов/ключей в /etc/postfix/cert.
Если не находит их - генерирует самоподписанные сертификаты и приватные ключи и кладет их в этот каталог.
Если каталог уже содержит необходимые файлы, то генерация новых не происходит.
Posfix настраивается на использование SSL/TLS с этими сертификатами.
Файлы, наличие которых проверяется в /etc/postfix/cert:
Таким образом к каталогу /etc/postfix/cert контейнера можно подключить volume содержащий, например,
купленный сертификат на домен или полученный с помощью letsencrypt и он будет использоваться для postfix.
В таком случае самоподписанный сертификат при запуске контейнера создан не будет.
Имена файлов должны быть именно такие как указаны выше.
Base name файлов сертификата и ключа домена обязательно должны совпадать с переменной POSTFIX_EMAIL_HOST.
Пример: если вы используете этот контейнер и у вас есть ключ и сертификат для домена mydomain.me, то в монтируемом volume
должны находиться следущие файлы:
rootCA.key
rootCA.pem
mydomain.me.crt
mydomain.me.key
Если меняете $POSTFIX_CERT_DIR в entrypoint то поменяйте его и в gencert.sh.
Для запуска и конфигурирования OpenDKIM надо предать entrypoint переменные окружения:
DKIM_DOMAINS (required): строка с доменами через пробел, письма от которых надо подписывать DKIM'ом.
Должна совпадать или содержать в себе домены из числа POSTFIX_EMAIL_HOST и POSTFIX_ADDITIONAL_DOMAINS.
OpenDKIM будет запущен, для него создадутся ключи на каждый домен.
В логах контейнера один раз при генерации ключей будет написано какие TXT записи нужно добавить для каждого домена.
Их нужно незамедлительно прописать у держателя зоны, а то письма будут подписываться, а проверка на почтовиках будет не удаваться.
Так же нужные TXT-записи можно посмотреть в контейнере: /etc/opendkim/keys/{domain}/{DKIM_SELECTOR}.txt на случай если забыли/потеряли.
Однажды созданные (или помещенные в volume) ключи перетираться при перезапуске контейнера не будут.
Есть возможность поместить свои ключи, подмонтировав volume с соотв. иерархией каталогов к /etc/opendkim/keys/ контейнера.
DKIM_SELECTOR: DKIM selector. Участвует в прописании TXT записи у домена. По умолчанию mail.
DKIM_KEY_LEN: длина ключа. По умолчанию 2048.
Для генерации ключей нужен opendkim-genkey который доступен только в alpine:edge. Неизвестно когда он будет в :latest.
А postfix и opendkim после сборки из edge не работают (проблема прав на файлах).
Я пофиксил права в entrypoint и почта отправляется и подписывается (верификацию входящей почты не проверял), но тем не менее тянуть контейнер
собранный из edge в продакшн не правильно.
Сертификаты Postfix и ключи OpenDKIM в случае хранения на ФС контейнера будут удалены и сгенерированы заново
в случае docker-compose down\up, т.к. удаляются сами контейнеры.
В случае docker-compose stop\up контейнеры не удаляются, все их данные остаются при перезапусках.
При использовании volume данные в них остаются даже после docker-compose down\up.
Это особенно важно для OpenDKIM т.к. при перегенерации ключей придется обновлять записи в DNS.
Поэтому желательно использовать volume для ключей/сертификатов Postfix и OpenDKIM даже для автоматически генерируемых данных.
Например так для сервиса postfix в docker-compose.yml:
services:
postfix
volumes:
- opendkim:/etc/opendkim/keys
- postfix:/etc/postfix/cert
volumes:
postfix:
opendkim:
Content type
Image
Digest
Size
18.1 MB
Last updated
over 7 years ago
docker pull jetstylehub/postfix-tls