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 21/06/2020, à 17:58

Goudinette

Serveur mail sur Raspberry Pi 4 : connexion impossible de l'extérieur.

Bonjour,

j'ai installé un serveur mail Postfix/Dovecot/Mysql sur un Raspberry Pi 4 en suivant ce tuto :
https://www.linode.com/docs/email/postf … and-mysql/

À priori tout est bon et le test d'envoi et de réception en ligne de commande depuis le serveur est concluant.

En revanche, impossible de configurer Thunderbird pour accéder aux mails depuis l'extérieur.
Je rentre tous les paramètres et quand je valide, Thunderbird mouline un moment sur "Vérification du mot de passe..." puis affiche "Connexion au serveur impossible. La configuration, l'identifiant ou le mot de passe sont probablement incorrects.".

Dans le fichier mail.log, je trouve cette entrée, qui correspond à ma tentative de connexion :

Jun 21 17:37:37 domaine dovecot: imap-login: Disconnected (auth failed, 3 attempts in 20 secs): user=<moi@domaine.fr>, method=PLAIN, rip=192.168.1.1, lip=192.168.1.84, TLS, session=<fxi35pmouJjAqAEB>

(J'ai remplacé le domaine et l'utilisateur par "domaine" et "moi").

Je n'arrive pas à trouver d'où peut venir le problème dans les fichiers de configuration.
Quelqu'un aurait une piste ?

Hors ligne

#2 Le 21/06/2020, à 19:31

Vobul

Re : Serveur mail sur Raspberry Pi 4 : connexion impossible de l'extérieur.

Faut que tu postes ta config.

Sinon t'as regardé ça : https://serverfault.com/questions/57404 … ion-failed ?


Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM

En ligne

#3 Le 22/06/2020, à 09:48

bruno

Re : Serveur mail sur Raspberry Pi 4 : connexion impossible de l'extérieur.

Bonjour,

Le serveur n'accepte pas la connexion avec le nom d'utilisateur/mot de passe. Il peut y avoir de très nombreuses raisons à cela. Il faut en premier lieu vérifier les identifiants et la connexion à la base de données (en ligne de commande avec mysql).

Hors ligne

#4 Le 22/06/2020, à 18:01

Goudinette

Re : Serveur mail sur Raspberry Pi 4 : connexion impossible de l'extérieur.

Bonjour et merci pour vos réponses.

Config postfix :

main.cf :

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

readme_directory = no

# TLS parameters
smtpd_tls_cert_file=/etc/letsencrypt/live/DOMAINE.fr/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/DOMAINE.fr/privkey.pem
smtpd_use_tls=yes
smtpd_tls_auth_only = yes
smtp_tls_security_level = may
smtpd_tls_security_level = may
smtpd_sasl_security_options = noanonymous, noplaintext
smtpd_sasl_tls_security_options = noanonymous

# Authentication
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes

# Restrictions
smtpd_helo_restrictions =
        permit_mynetworks,
        permit_sasl_authenticated,
        reject_invalid_helo_hostname,
        reject_non_fqdn_helo_hostname
smtpd_recipient_restrictions =
        permit_mynetworks,
        permit_sasl_authenticated,
        reject_non_fqdn_recipient,
        reject_unknown_recipient_domain,
        reject_unlisted_recipient,
        reject_unauth_destination
smtpd_sender_restrictions =
        permit_mynetworks,
        permit_sasl_authenticated,
        reject_non_fqdn_sender,
        reject_unknown_sender_domain
smtpd_relay_restrictions =
        permit_mynetworks,
        permit_sasl_authenticated,
        defer_unauth_destination

myhostname = mail.DOMAINE.fr
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydomain = DOMAINE.fr
myorigin = $mydomain
mydestination = $mydomain, localhost.$mydomain
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
proxy_interfaces =

# Handing off local delivery to Dovecot's LMTP, and telling it where to store mail
virtual_transport = lmtp:unix:private/dovecot-lmtp

# Virtual domains, users, and aliases
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf,
        mysql:/etc/postfix/mysql-virtual-email2email.cf

# Even more Restrictions and MTA params
disable_vrfy_command = yes
strict_rfc821_envelopes = yes
#smtpd_etrn_restrictions = reject
#smtpd_reject_unlisted_sender = yes
#smtpd_reject_unlisted_recipient = yes
smtpd_delay_reject = yes
smtpd_helo_required = yes
smtp_always_send_ehlo = yes
#smtpd_hard_error_limit = 1
smtpd_timeout = 30s
smtp_helo_timeout = 15s
smtp_rcpt_timeout = 15s
smtpd_recipient_limit = 40
minimal_backoff_time = 180s
maximal_backoff_time = 3h

# Reply Rejection Codes
invalid_hostname_reject_code = 550
non_fqdn_reject_code = 550
unknown_address_reject_code = 550
unknown_client_reject_code = 550
unknown_hostname_reject_code = 550
unverified_recipient_reject_code = 550
unverified_sender_reject_code = 550

master.cf :

# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (no)    (never) (100)
# ==========================================================================
smtp      inet  n       -       n       -       -       smtpd
#smtp      inet  n       -       y       -       1       postscreen
#smtpd     pass  -       -       y       -       -       smtpd
#dnsblog   unix  -       -       y       -       0       dnsblog
#tlsproxy  unix  -       -       y       -       0       tlsproxy
submission inet n       -       y       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
#  -o smtpd_tls_auth_only=yes
  -o smtpd_reject_unlisted_recipient=no
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o smtpd_helo_restrictions=$mua_helo_restrictions
#  -o smtpd_sender_restrictions=$mua_sender_restrictions
#  -o smtpd_recipient_restrictions=
#  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
smtps     inet  n       -       -       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
#  -o smtpd_reject_unlisted_recipient=no
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o smtpd_helo_restrictions=$mua_helo_restrictions
#  -o smtpd_sender_restrictions=$mua_sender_restrictions
#  -o smtpd_recipient_restrictions=
#  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
#628       inet  n       -       y       -       -       qmqpd
pickup    unix  n       -       y       60      1       pickup
cleanup   unix  n       -       y       -       0       cleanup
qmgr      unix  n       -       n       300     1       qmgr
#qmgr     unix  n       -       n       300     1       oqmgr
tlsmgr    unix  -       -       y       1000?   1       tlsmgr
rewrite   unix  -       -       y       -       -       trivial-rewrite
bounce    unix  -       -       y       -       0       bounce
defer     unix  -       -       y       -       0       bounce
trace     unix  -       -       y       -       0       bounce
verify    unix  -       -       y       -       1       verify
flush     unix  n       -       y       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       y       -       -       smtp
relay     unix  -       -       y       -       -       smtp
        -o syslog_name=postfix/$service_name
#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq     unix  n       -       y       -       -       showq
error     unix  -       -       y       -       -       error
retry     unix  -       -       y       -       -       error
discard   unix  -       -       y       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       y       -       -       lmtp
anvil     unix  -       -       y       -       1       anvil
scache    unix  -       -       y       -       1       scache
postlog   unix-dgram n  -       n       -       1       postlogd
#

maildrop  unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
#

#
uucp      unix  -       n       n       -       -       pipe
  flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
#
# Other external delivery methods.
#
ifmail    unix  -       n       n       -       -       pipe
  flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp     unix  -       n       n       -       -       pipe
  flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
scalemail-backend unix  -       n       n       -       2       pipe
  flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
mailman   unix  -       n       n       -       -       pipe
  flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
  ${nexthop} ${user}

Config dovecot :

dovecot.conf :

# Enable installed protocols
!include_try /usr/share/dovecot/protocols.d/*.protocol
protocols = imap pop3 lmtp
dict {
  #quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
  #expire = sqlite:/etc/dovecot/dovecot-dict-sql.conf.ext
}

!include conf.d/*.conf

!include_try local.conf

postmaster_address=postmaster at DOMAINE.fr

10-mail.conf

mail_location = maildir:/media/data/mail/vhosts/%d/%n/
mail_privileged_group = mail

10-auth.conf

disable_plaintext_auth = yes
auth_mechanisms = plain login
!include auth-system.conf.ext
!include auth-sql.conf.ext

auth-sql.conf.ext

passdb {
  driver = sql
  args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
  driver = static
  args = uid=vmail gid=vmail home=/media/data/mail/vhosts/%d/%n
}

dovecot-sql.conf.ext

# Database driver: mysql, pgsql, sqlite
driver = mysql
connect = host=127.0.0.1 dbname=mailserver user=mailuser password=MOTDEPASSE
default_pass_scheme = SHA512-CRYPT
password_query = SELECT email as user, password FROM virtual_users WHERE email='%u';

10-master.conf

service imap-login {
  inet_listener imap {
    port = 0
  }
  inet_listener imaps {
    port = 993
    ssl = yes
  }
}

service pop3-login {
  inet_listener pop3 {
    port = 0
  }
  inet_listener pop3s {
    port = 995
    ssl = yes
  }
}

service submission-login {
  inet_listener submission {
    #port = 587
  }
}
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    #mode = 0666
    mode = 0600
    user = postfix
    group = postfix
  }
}

service imap {
}

service pop3 {
}

service submission {
}

service auth {
  unix_listener auth-userdb {
    mode = 0600
    user = vmail
    #group = 
  }
 # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0660
    user = postfix
    group = postfix
  }

  # Auth process is run as this user.
  user = dovecot
}
service auth-worker {
  user = vmail
}

service dict {
  unix_listener dict {
    #mode = 0600
    #user = 
    #group = 
  }
}

10-ssl.conf

ssl = required
ssl_cert = </etc/letsencrypt/live/DOMAINE.fr/fullchain.pem
ssl_key = </etc/letsencrypt/live/DOMAINE.fr/privkey.pem
ssl_client_ca_dir = /etc/ssl/certs
ssl_dh = </usr/share/dovecot/dh.pem

J'ai remplacé mon nom de domaine par DOMAINE et le mot de passe de la base de données par MOT DE PASSE.

Je pense aussi qu'il y a un problème de connexion à la base de données mais je n'arrive pas à savoir quoi.
Je regarderai de plus près le lien donné dans la première réponse quand j'aurai un peu de temps. Il m'en faut pour bien comprendre quand c'est en anglais. wink

En plus, je ne sais pas trop ce que j'ai fait mais je ne reçois plus les e-mails. Quand j'en envoie un sur mon serveur, je reçois aussitôt un "Undelivered Mail Returned to Sender" pour une permission refusée au répertoire de mail alors que ce n'est pas celui que j'ai spécifié dans la config... hmm
Pourtant ça fonctionnait avant.

Bref, comme mes obligations professionnelles ne me le permettront pas dans les jours qui viennent, j'étudierai tout ça un peu plus tard.

Hors ligne

#5 Le 22/06/2020, à 18:07

bruno

Re : Serveur mail sur Raspberry Pi 4 : connexion impossible de l'extérieur.

Et là :

connect = host=127.0.0.1 dbname=mailserver user=mailuser password=MOTDEPASSE

tu as bien remplacé mailuser et MOTDEPASSE par les identifiants de l'utilisateur ayant les droits sur la base mailserver ?

Au cas où il faut tester la connexion à la base de donnée avec :

mysql -u mailuser -p

Attention, la configuration d'un serveur de courriel complet est loin d'être simple. Le tuto que tu as suivi semble relativement bien foutu mais c'est brut et sans explications. Or il faut comprendre chaque ligne de configuration proposée et être capable de l’adapter à ses propres besoins.
Et vu l'usage (auto-hébergement sur sur un raspberry), je me demande si l'utilisation de mysql pour gérer les utilisateurs et les domaines est pertinente.

Hors ligne

#6 Le 22/06/2020, à 19:11

Goudinette

Re : Serveur mail sur Raspberry Pi 4 : connexion impossible de l'extérieur.

tu as bien remplacé mailuser et MOTDEPASSE par les identifiants de l'utilisateur ayant les droits sur la base mailserver ?

Oui.
En revanche, la connexion est refusée :

ERROR 1045 (28000): Access denied for user 'mailuser'@'localhost' (using password: YES)

Attention, la configuration d'un serveur de courriel complet est loin d'être simple. Le tuto que tu as suivi semble relativement bien foutu mais c'est brut et sans explications. Or il faut comprendre chaque ligne de configuration proposée et être capable de l’adapter à ses propres besoins.

J'essaie. J'ai les onglets ouverts sur la doc de mysql et dovecot aussi. Mais bon, comme je disais, il me faut un certain temps pour assimiler toutes ces pages en anglais ! smile

Et vu l'usage (auto-hébergement sur sur un raspberry), je me demande si l'utilisation de mysql pour gérer les utilisateurs et les domaines est pertinente.

Que préconiserais-tu ?

Ceci dit, cet auto-hébergement n'est pas vital. C'est surtout un apprentissage et si j’acquiers assez de connaissances, je l'utiliserai peut-être plus sérieusement.
Mais effectivement, c'est du boulot !

Hors ligne

#7 Le 22/06/2020, à 20:16

Vobul

Re : Serveur mail sur Raspberry Pi 4 : connexion impossible de l'extérieur.


Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM

En ligne