Initial: stack mail Postfix + Dovecot sur Alpine
This commit is contained in:
commit
24cf567d9a
5 changed files with 98 additions and 0 deletions
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
vmail/
|
||||
*.log
|
||||
22
dovecot/Dockerfile
Normal file
22
dovecot/Dockerfile
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
# Image de base Alpine
|
||||
FROM alpine:3.21
|
||||
|
||||
# Installer Dovecot (IMAP/POP3) + le module d'authentification
|
||||
RUN apk add --no-cache dovecot
|
||||
|
||||
# --- Utilisateur vmail identique à celui de Postfix (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
|
||||
|
||||
# --- Copier nos fichiers de config dans l'image ---
|
||||
COPY dovecot.conf /etc/dovecot/dovecot.conf
|
||||
COPY users /etc/dovecot/users
|
||||
|
||||
# Exposer les ports IMAP
|
||||
EXPOSE 143 993
|
||||
|
||||
# Lancer Dovecot au premier plan
|
||||
CMD ["dovecot", "-F"]
|
||||
29
dovecot/dovecot.conf
Normal file
29
dovecot/dovecot.conf
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
# Protocoles servis
|
||||
protocols = imap
|
||||
|
||||
# Écouter sur toutes les interfaces
|
||||
listen = *
|
||||
|
||||
# --- Emplacement des boîtes : le même Maildir que Postfix ---
|
||||
mail_location = maildir:/var/mail/vhosts/%d/%n
|
||||
# %d = domaine (ayoinc.test), %n = partie locale (alice, bob)
|
||||
|
||||
# --- Authentification ---
|
||||
disable_plaintext_auth = no
|
||||
auth_mechanisms = plain login
|
||||
|
||||
# Base d'utilisateurs : un fichier passwd-file
|
||||
passdb {
|
||||
driver = passwd-file
|
||||
args = scheme=PLAIN username_format=%u /etc/dovecot/users
|
||||
}
|
||||
userdb {
|
||||
driver = static
|
||||
args = uid=5000 gid=5000 home=/var/mail/vhosts/%d/%n
|
||||
}
|
||||
|
||||
# Désactiver SSL pour l'instant (on l'ajoutera proprement après)
|
||||
ssl = no
|
||||
|
||||
# Logs vers la sortie standard (pratique pour podman logs)
|
||||
log_path = /dev/stderr
|
||||
2
dovecot/users
Normal file
2
dovecot/users
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
alice@ayoinc.test:{PLAIN}alice
|
||||
bob@ayoinc.test:{PLAIN}bob
|
||||
43
postfix/Dockerfile
Normal file
43
postfix/Dockerfile
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
# 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"]
|
||||
Loading…
Add table
Add a link
Reference in a new issue