43 lines
1.8 KiB
Docker
43 lines
1.8 KiB
Docker
# Image de base Alpine, légère
|
|
FROM alpine:3.21
|
|
|
|
# Installer Postfix et les outils
|
|
RUN apk add --no-cache postfix postfix-pcre rsyslog
|
|
|
|
# --- Utilisateur dédié au stockage des mails virtuels ---
|
|
# Tous les mails appartiendront à cet utilisateur "vmail" (uid/gid 5000)
|
|
# Supprimer le vmail créé par défaut par Postfix, puis recréer le nôtre en uid/gid 5000
|
|
RUN (deluser vmail 2>/dev/null || true) \
|
|
&& (delgroup vmail 2>/dev/null || true) \
|
|
&& addgroup -g 5000 vmail \
|
|
&& adduser -D -u 5000 -G vmail -h /var/mail/vhosts vmail \
|
|
&& mkdir -p /var/mail/vhosts/ayoinc.test \
|
|
&& chown -R vmail:vmail /var/mail/vhosts
|
|
# --- Configuration Postfix de base ---
|
|
RUN postconf -e "myhostname = mail.ayoinc.test" \
|
|
&& postconf -e "mydomain = ayoinc.test" \
|
|
&& postconf -e "myorigin = \$mydomain" \
|
|
# Postfix ne gère PAS lui-même notre domaine en "local" : c'est du virtuel
|
|
&& postconf -e "mydestination = localhost" \
|
|
&& postconf -e "inet_interfaces = all" \
|
|
&& postconf -e "inet_protocols = ipv4"
|
|
|
|
# --- Configuration des boîtes virtuelles ---
|
|
RUN postconf -e "virtual_mailbox_domains = ayoinc.test" \
|
|
&& postconf -e "virtual_mailbox_base = /var/mail/vhosts" \
|
|
&& postconf -e "virtual_mailbox_maps = lmdb:/etc/postfix/vmailbox" \
|
|
&& postconf -e "virtual_minimum_uid = 5000" \
|
|
&& postconf -e "virtual_uid_maps = static:5000" \
|
|
&& postconf -e "virtual_gid_maps = static:5000"
|
|
|
|
# --- Déclaration des comptes virtuels (alice & bob) ---
|
|
# Chaque ligne : adresse -> chemin Maildir (le / final = format Maildir)
|
|
RUN echo "alice@ayoinc.test ayoinc.test/alice/" > /etc/postfix/vmailbox \
|
|
&& echo "bob@ayoinc.test ayoinc.test/bob/" >> /etc/postfix/vmailbox \
|
|
&& postmap lmdb:/etc/postfix/vmailbox
|
|
|
|
# Exposer le port SMTP
|
|
EXPOSE 25
|
|
|
|
# Lancer Postfix au premier plan
|
|
CMD ["postfix", "start-fg"]
|