Palier 3: Postfix + Dovecot working! Mail test successful with swaks

This commit is contained in:
ayo 2026-06-17 09:54:03 +02:00
commit 4a989bad17
7 changed files with 82 additions and 55 deletions

View file

@ -1,43 +1,18 @@
# Image de base Alpine, légère
FROM alpine:3.21
FROM debian:bookworm-slim
# Installer Postfix et les outils
RUN apk add --no-cache postfix postfix-pcre rsyslog
RUN apt-get update && apt-get install -y postfix mailutils
# --- 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"
COPY ../share/users.txt /tmp/users.txt
COPY ../share/postfix.sh /tmp/postfix.sh
COPY postfix/main.cf /etc/postfix/main.cf
COPY postfix/entrypoint.sh /entrypoint.sh
# --- 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"
RUN chmod 644 /etc/postfix/main.cf && \
chmod +x /tmp/postfix.sh /entrypoint.sh && \
/tmp/postfix.sh > /etc/postfix/virtual_mailbox && \
postmap /etc/postfix/virtual_mailbox && \
rm /tmp/users.txt /tmp/postfix.sh
# --- 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
EXPOSE 25 587
# Exposer le port SMTP
EXPOSE 25
# Lancer Postfix au premier plan
CMD ["postfix", "start-fg"]
CMD ["/entrypoint.sh"]

4
postfix/entrypoint.sh Executable file
View file

@ -0,0 +1,4 @@
#!/bin/bash
set -e
postfix start
tail -f /dev/null

15
postfix/main.cf Normal file
View file

@ -0,0 +1,15 @@
myhostname = mail.ayoinc.test
myorigin = ayoinc.test
mydestination = localhost
mynetworks = 127.0.0.0/8 [::1]/128
inet_interfaces = all
virtual_mailbox_domains = ayoinc.test
virtual_mailbox_base = /var/mail/vhosts
virtual_mailbox_maps = hash:/etc/postfix/virtual_mailbox
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_transport = virtual
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
maillog_file = /dev/stdout