Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 06/05/2026, à 14:21

pierrot106

serveur mail

Bonjour,

Je cherche à mettre en place un serveur mail sur mon_nom_domaine.fr.
J'ai installé postfix, et réussi à configurer la réception de mails@mon_nom_domaine.fr.
Maintenant je cherche à configurer dovecot pour pouvoir récupérer les mails en imap sur ma machine locale.
Je me heurte à des difficultés, dont la principale est que je ne trouve pas le cas de figure que j'ai pour postfix, et d'autre part la documentation est prolifique: je n'ai pas le temps pour tout lire et bien comprendre.

J'utilise des utilisateurs virtuels, chaque compte @mon_nom_domaine.fr est dans un fichier comptes.db.
Dans ce fichier chaque compte correspond à un répertoire.
Dans ce répertoire, postfix crée des sous-répertoires dont new pour les nouveaux mails reçus.

Comment faire pour configurer dovecot?

Hors ligne

#2 Le 31/05/2026, à 18:36

LeoMajor

Re : serveur mail

salut,

le dilemme: local vs virtual

LA RECEPTION 

...defer_unauth_destination (ou reject) est une classe de restriction  defer_unauth_destination=permit_auth_destination, defer
reject_unauth_destination=permit_auth_destination, reject

permit_auth_destination est le fil conducteur pour la réception. 

permit_auth_destination
Autorise la requête lorsque l'une des propositions suivantes est vraie :
Postfix est un relais : l'adresse résolue RCPT TO correspond à $relay_domains ou l'un de leurs sous-domaines et l'adresse ne contient pas de routage expéditeur (user@elsewhere@domain),
Postfix est la destination finale : l'adresse résolue RCPT TO correspond à $mydestination, $inet_interfaces, $proxy_interfaces, $virtual_alias_domains ou $virtual_mailbox_domains et l'adresse ne contient pas de routage expéditeur (user@elsewhere@domain).

C’est là qu’on réalise qu’en réalité,  le MX conceptualise le domaine de courrier  (maildomainname), et le viabilise.  Donc le type A seul n’est pas suffisant sauf exception dans un contexte LAN.  
L’enregistrement dns mx pointe sur ton postfix. Cela suppose aussi que les récipients ( les adresses email sont à déclarer sur cette machine )  

Cela veut dire aussi que les messages envoyés ET reçus transitent par ton Postfix , et n’arrivent pas directement sur ton imap/pop serveur. 


 Postfix utilise 2 méthodes de travail pour la réception (local transport et virtual transport)
  
 A/ LOCAL 
_  livraison s’effectue dans le home de l’utilisateur ($HOME) au sens unix et PAM (le compte doit exister quelque ce soit le mode d’authentification)
_ pas de problème de droits et permissions
_ renvoie au transport LOCAL (master.cf)
_renvoie à tous les paramètres en prefix « local_ » 
_ A/ 
 évalue les paramètres de base, 
mydestination, relay_domains, .., local_recipient_maps

au niveau transport 
A/ agent de livraison local:  local_transport
choisir au choix; home_mailbox, mailbox_command, mailbox_transport

home_mailbox = Maildir/   # postfix livre lui même
mailbox_command = /usr/lib/dovecot/dovecot-lda -f "$SENDER" -a "$RECIPIENT  
mailbox_transport = lmtp:unix:private/dovecot-lmtp
mailbox_command = /usr/bin/getmail_maildir ~/"$USER"@cafe.fr/Maildir/  # exotique, OK fonctionne compatible avec dovecot auth

Tu remarques que postfix est capable de se livrer tout seul, ou utiliser un mda tiers (dovecot, dbmail, courier-imap, getmail et bien d’autres. )
  
ajouter éventuellement, si pam n'est pas utilisé.
local_recipient_maps = hash:/etc/postfix/recipients_allow.cf, $alias_maps, proxy:unix:passwd.byname

cat /etc/postfix/recipients_allow.cf
toto@cafe.fr	OK
tutu@cafe.fr	OK
postmaster@cafe.fr 	OK

 B/ VIRTUAL 

virtual_mailbox_base est  à renseigner
B/ évalue virtual_*

A + B /  ou B/ relay_recipient_maps

B/ agent de livraison virtual:  virtual transport

virtual_transport = dovecot     et renseigner le master.cf  
virtual_transport = lmtp:unix:private/dovecot-lmtp 

cafe.fr est livré par LOCAL
lait.chocolat.fr et chocolat.fr est livré par VIRTUAL

Alternative transport_maps  (A, A+B, B)

lait.chocolat.fr    lmtp:unix:private/dovecot-lmtp 
chocolat.fr	lmtp:unix:private/dovecot-lmtp 
cafe.fr		local:
localhost	error:
l
les dns mx et txt spf existent pour cafe.fr, chocolat.fr, lait.chocolat.fr

si uniquement B, je conseille, mais chaqu'un fait ce qu'il veut.
 mydestination =

si A+B
mydestination = cafe.fr
virtual_mailbox_maps = hash:/etc/postfix/vmailbox_maps.cf  # par exemple

/etc/postfix/vmailbox_maps.cf
toto@chocolat.fr	toto@chocolat.fr
tata@lait.chocolat.fr   tata@lait.chocolat.fr

en revanche dans dovecot, comme, il y a plusieurs mail_location, et différents uid, il y a des des réglages à faire. 


postconf -e virtual_transport=dovecot
postconf -e dovecot_destination_recipient_limit=1


LOCAL + VIRTUAL 

mailbox_transport = lmtp:unix:private/dovecot-lmtp  # A LOCAL
virtual_transport = lmtp:unix:private/dovecot-lmtp     # B VIRTUAL

pour A+B, tu es plus ou moins obligé de composer avec les uid
A et B /  relay_recipient_maps
relay_recipient_maps ; mettre tous les récipients connus de A unix users et B virtual users


A+B et surtout B/ 
utiliser useradd, usermod, si besoin

id mail
uid=8(mail) gid=8(mail) groupes=8(mail)
id mail; getent passwd mail
uid=8(mail) gid=8(mail) groupes=8(mail)
mail:x:8:8:mail:/srv/mail:/usr/sbin/nologin
principalement

virtual_gid_maps = $virtual_uid_maps
virtual_mailbox_base = /srv/mail
virtual_mailbox_maps = hash:/etc/postfix/vmailbox_maps.cf
virtual_minimum_uid = 8
virtual_transport = lmtp:unix:private/dovecot-lmtp
virtual_uid_maps = hash:/etc/postfix/domains_uid.cf

regexp:/etc/postfix/domains_uid.cf

/(.*)@lait\.chocolat\.fr/	8
/(.*)@chocolat\.fr/  8
/toto@cafe\.fr/	1000
/tutu@cafe\.fr/	1002


doveconf -n
principalement

mail_location = maildir:/srv/mail/%u/Maildir
et surcharger avec 
/etc/dovecot/user_domain.passwd

toto@cafe.fr:{CRAM-MD5}aaaaa:1000:1000::/home/toto/toto@cafe.fr::userdb_mail=maildir:/home/toto/toto@cafe.fr/Maildir
tutu@cafe.fr:{CRAM-MD5}aaaaa:1002:1002::/home/tutu/tutu@cafe.fr::userdb_mail=maildir:/home/tutu/tutu@cafe.fr/Maildir
tata@lait.chocolat.fr:{CRAM-MD5}aaaaa:8:8::/srv/mail/tatat@lait.chocolat.fr::userdb_mail=maildir:~/Maildir
titi@lait.chocolat.fr:{CRAM-MD5}aaaaa:8:8::/srv/mail/titi@lait.chocolat.fr::userdb_mail=maildir:~/Maildir
# 2.2.9: /etc/dovecot/dovecot.conf

auth_debug = yes
auth_debug_passwords = yes
auth_default_realm = cafe.fr
auth_mechanisms = cram-md5
auth_username_format = %u
auth_verbose = yes
auth_verbose_passwords = plain
debug_log_path = /var/log/dovecot-debug.log
first_valid_uid = 8
hostname = mail.domain.tld
info_log_path = /var/log/dovecot-info.log
listen = *,[::]
log_path = /var/log/dovecot.log
mail_debug = yes
mail_location = maildir:/srv/mail/%u/Maildir
namespace inbox {
  inbox = yes
  location = 
  mailbox Brouillon-- {
    auto = subscribe
    special_use = \Drafts
  }
  mailbox Corbeille-- {
    auto = subscribe
    special_use = \Trash
  }
  mailbox Envoye-- {
    auto = subscribe
    special_use = \Sent
  }
  mailbox Spam-- {
    auto = subscribe
    special_use = \Junk
  }
  prefix = 
}
passdb {
  args = scheme=cram-md5 username_format=%u /etc/dovecot/user_domain.passwd
  driver = passwd-file
}
protocols = imap lmtp
service auth {
  unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0660
    user = postfix
  }
}
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    group = postfix
    mode = 0666
    user = postfix
  }
}
ssl_cert = </opt/x509/wildcard.domain.tld-cert.pem
ssl_key = </opt/x509/wildcard.domain.tld-key.pem
userdb {
  args = username_format=%u /etc/dovecot/user_domain.passwd
  driver = passwd-file
}
pour postfix, tu as quelque chose qui ressemble à ci dessous. (A+B)
postconf -n

address_verify_sender = postmaster@cafe.fr
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
bounce_queue_lifetime = 36h
broken_sasl_auth_clients = yes
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/lib/postfix
data_directory = /var/lib/postfix
default_destination_concurrency_limit = 10
default_destination_recipient_limit = 25
default_transport = smtp
empty_address_recipient = MAILER-DAEMON@$myorigin
home_mailbox = Maildir/
html_directory = no
inet_interfaces = all
inet_protocols = all
local_destination_concurrency_limit = 5
local_recipient_maps = hash:/etc/postfix/recipients_allow.cf, $alias_maps, proxy:unix:passwd.byname
mail_owner = postfix
mailbox_size_limit = 0
mailbox_transport = lmtp:unix:private/dovecot-lmtp
mailq_path = /usr/bin/mailq
manpage_directory = /usr/share/man
maximal_queue_lifetime = 36h
mydestination = cafe.fr
mydomain = cafe.fr
myhostname = mail.cafe.fr
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
newaliases_path = /usr/bin/newaliases
queue_directory = /var/spool/postfix
readme_directory = no
recipient_delimiter = +
relay_domains = $mydomain
relay_recipient_maps = hash:/etc/postfix/recipients_allow.cf
relayhost =
sample_directory = /usr/share/doc/postfix/examples
sendmail_path = /usr/sbin/sendmail
setgid_group = postdrop
smtp_destination_concurrency_limit = 5
smtp_destination_rate_delay = 1
smtp_sasl_auth_enable = yes
smtp_sasl_mechanism_filter = cram-md5, plain, login
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd.cf
smtp_sasl_security_options = noplaintext
smtp_tls_CAfile = $smtpd_tls_CAfile
smtp_tls_cert_file = $smtpd_tls_cert_file
smtp_tls_key_file = $smtpd_tls_key_file
smtp_tls_security_level = may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_use_tls = yes
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_client_connection_count_limit = 4
smtpd_client_connection_rate_limit = 30
smtpd_client_recipient_rate_limit = 30
smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unknown_client, check_client_access regexp:/etc/postfix/auto_access_clients_denied.cf, permit
smtpd_delay_reject = no
smtpd_error_sleep_time = 0
smtpd_hard_error_limit = 4
smtpd_helo_restrictions = reject_non_fqdn_helo_hostname, permit
smtpd_recipient_limit = 30
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, permit_auth_destination, reject_non_fqdn_recipient, reject
smtpd_relay_restrictions =
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = no
smtpd_sasl_local_domain = $mydomain
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sender_login_maps = hash:/etc/postfix/permit_sasl_lock_mailfrom.cf
smtpd_sender_restrictions = reject_non_fqdn_sender, permit_mynetworks, reject_sender_login_mismatch, check_sender_access regexp:/etc/postfix/auto_access_sender_denied.cf, permit
smtpd_tls_CAfile = /opt/x509/ca.lns.cafe.fr-cacert.pem
smtpd_tls_CAfile = /opt/x509/ca.lns.cafe.fr-cacert.pem
smtpd_tls_cert_file = /opt/x509/wildcard.cafe.fr-cert.pem
smtpd_tls_cert_file = /opt/x509/wildcard.cafe.fr-cert.pem
smtpd_tls_key_file = /opt/x509/wildcard.cafe.fr-key.pem
smtpd_tls_key_file = /opt/x509/wildcard.cafe.fr-key.pem
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
soft_bounce = yes
transport_maps = hash:/etc/postfix/transport.cf
virtual_alias_maps = hash:/etc/postfix/valias_maps.cf
virtual_destination_concurrency_limit = 10
virtual_destination_rate_delay = 1
virtual_gid_maps = $virtual_uid_maps
virtual_mailbox_base = /srv/mail
virtual_mailbox_maps = hash:/etc/postfix/vmailbox_maps.cf
virtual_minimum_uid = 8
virtual_transport = lmtp:unix:private/dovecot-lmtp
virtual_uid_maps = regexp:/etc/postfix/domains_uid.cf
---------------------
/etc/mailname   cafe.fr

lait.chocolat.fr et chocolat.fr sont gérés par virtual 
cafe.fr, domaine de courrier par défaut par local 


L’ENVOI (indirect)

via   permit_mynetworks, permit_sasl_authenticated

j’utilise un relais externe free.fr parce que je suis sur un réseau free.fr
Crée un compte secondaire chez free.fr qui te permettra de faire des AUTH smtp.  
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd.cf   

transport_maps = hash:/etc/postfix/transport.cf

à la dernière ligne
*       smtp:[smtp2-g21.free.fr]:587

et surtout le plus important déclare  ton relais externe dans le spf
host -t txt target.tld
... descriptive text "v=spf1 mx  +a:smtp2-g21.free.fr ?all"


LES  DNS ENREGISTREMENTS 

MX  détermine le(s) garant(s) à la réception
SPF détermine le(s) garant(s) à l’envoi
DKIM détermine si le message est corrompu au cours du voyage.  (une sorte de md5sum entre le départ et l’arrivée).  La Suite de Domainkeys. 
DMARC tente de faire la synthèse entre le SPF et le DKIM.  La Suite de ADSP DKIM. Toujours expérimental. En attente de mise à jour.  La faille: le double dkim le bypasse.   

Hors ligne

#3 Le 13/06/2026, à 15:59

pierrot106

Re : serveur mail

Bonjour,

A ce stade j'aurai besoin de précisions.
Je souhaite utiliser uniquement la méthode virtual pour postfix.

Voici mon fichier main.cf:

smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_security_level=may

smtp_tls_CApath=/etc/ssl/certs
smtp_tls_security_level=may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = Nom_Machine_Serveur
#myorigin = /etc/mailname
mydestination = localhost.local, , localhost 
#relayhost = 
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
#mailbox_size_limit = 0
#recipient_delimiter = +
#inet_interfaces = all
#inet_protocols = all

virtual_mailbox_domains = Mon_Domaine.fr
virtual_mailbox_base = /var/mail
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_minimum_uid = 100
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_alias_maps = hash:/etc/postfix/virtual

virtual_transport = dovecot

dovecot_destination_recipient_limit = 1

et voici /etc/potfix/vmailbox

mail1@Mon_Domaine.fr	mail1@Mon_Domaine.fr
mail2@Mon_Domaine.fr	mail2@Mon_Domaine.fr
mail3@Mon_Domaine.fr	mail3@Mon_Domaine.fr

Avant d'aller plus loin, je souhaite savoir s'il y a des erreurs dans ce qui précède, et comment vérifier que cette étape est ok?

A partir ligne 49 du message de leo

B/ VIRTUAL 

virtual_mailbox_base est  à renseigner
B/ évalue virtual_*

A + B /  ou B/ relay_recipient_maps

B/ agent de livraison virtual:  virtual transport

virtual_transport = dovecot     et renseigner le master.cf  
virtual_transport = lmtp:unix:private/dovecot-lmtp 

Dans quel fichier mettre la ligne "virtual_transport = lmtp:unix:private/dovecot-lmtp "?

cafe.fr est livré par LOCAL
lait.chocolat.fr et chocolat.fr est livré par VIRTUAL

Alternative transport_maps  (A, A+B, B)

lait.chocolat.fr    lmtp:unix:private/dovecot-lmtp #dans quel fichier? 
chocolat.fr	lmtp:unix:private/dovecot-lmtp     #dans quel fichier? 
cafe.fr		local:
localhost	error:
l
catles dns mx et txt spf existent pour cafe.fr, chocolat.fr, lait.chocolat.fr
#
si uniquement B, je conseille, mais chaqu'un fait ce qu'il veut.
 mydestination =   

Quelle valeur pour mydestination?

Hors ligne

#4 Le 09/07/2026, à 17:34

pierrot106

Re : serveur mail

Hors ligne