Простой почтовый сервер (версия 2)
В дополнение к предыдущей заметке...
Настройка Dnsmasq
address=/avk.local/192.168.20.10
address=/mail.avk.local/192.168.20.10
mx-host=avk.local,192.168.20.10,10
mx-host=mail.avk.local,192.168.20.10,20
ptr-record=10.20.168.192.in-addr.arpa.,mail.avk.local
Сборка образа и запуск контейнера
Сценарий сборки образа Dockerfile:
Сценарий, выполняемый при сборке образа внутри контейнера init.sh:
#!/bin/bash
apt-get update
apt-get upgrade -y
export DEBIAN_FRONTEND=noninteractive
apt-get install -y iputils-ping dnsutils iproute2 mc nano postfix dovecot-pop3d inotify-tools
Сценарий, выполняемый внутри контейнера при его запуске, start.sh:
#!/bin/bash
postfix start-fg &
dovecot -F &
bash /wact.sh /etc/postfix/main.cf "postfix reload"
bash /wact.sh /etc/dovecot/dovecot.conf "dovecot reload"
tail -f /dev/null
Файл сценария для отслеживания изменений wact.sh:
#!/bin/bash
if [ "$#" -lt 2 ]; then
echo "usage: $0 <file> <command>"
exit 1
fi
TARGET_FILE="$1"
shift
COMMAND="$@"
while true; do
inotifywait -e modify "$TARGET_FILE" >/dev/null 2>&1
eval "$COMMAND"
done
Файл конфигурации Postfix main.cf:
Файл конфигурации Dovecot dovecot.conf:
Сценарий сборки образа и запуска контейнера docker-compose.yml:
services:
mailserver:
build: .
restart: always
image: mailserver
container_name: mailserver
ports:
- "25:25" # SMTP
- "465:465" # SMTPS
- "110:110" # POP3
- "587:587" # SMTP
- "995:995" # POP3S
- "993:993" # IMAPS
- "143:143" # IMAP
network_mode: "bridge"
volumes:
- ./main.cf:/etc/postfix/main.cf:ro
- ./dovecot.conf:/etc/dovecot/dovecot.conf:ro
Запустить сборку образа и контейнер: