Quelqu'un pour m'aider à configurer SMTP sur seveur perso ?

Je cherche depuis ce matin mais je patauge.
Situation :
Serveur - passage de Squeeze à Wheezy.
Tout s’est passé facilement pour la réception du courrier IMAP, dont STARTTLS comme sécurité de connexion. Je n’ai aucune modification avec ce qui était sous Squeeze.
Pour l’expédition SMTP, aucune modification n’a été faite MAIS il ne veut plus expédier avec STARTTLS comme sécurité de connexion, contrairement à ce qui se passait sous Squeeze.
Pas mieux avec SSL/TLS
J’arrive à expédier les mails seulement en plaçant “aucune” dans la case “sécurité de connexion” de Icedove.
Les choix qui se présentent sont : aucune - STARTTLS - SSL/TLS.
Il y a certainement une configuration que j’ai loupée mais laquelle et où :question:
J’avoue que je ne comprends pratiquement rien aux problèmes de cryptage et je n’ai pas trouvé de tutos adapté à mon niveau, c’est à dire “très bas” :confused:
Quand j’essaie d’envoyer avec STARTTLS, j’ai l’alerte suivante :

[code]Transcript of session follows.

Out: 220 rictux.fr ESMTP Postfix (Debian/GNU)
In: EHLO [192.168.0.5]
Out: 250-rictux.fr
Out: 250-PIPELINING
Out: 250-SIZE 10240000
Out: 250-VRFY
Out: 250-ETRN
Out: 250-STARTTLS
Out: 250-AUTH PLAIN
Out: 250-ENHANCEDSTATUSCODES
Out: 250-8BITMIME
Out: 250 DSN
In: STARTTLS
Out: 454 4.7.0 TLS not available due to local problem
In: QUIT
Out: 221 2.0.0 Bye[/code]
Dans le log “mail”, rien de concret aux mêmes heures.
Sinon une aide, une direction à suivre ou un lien explicatif à ma portée, seraient les bienvenus
Merci.

Alors pourrais-tu pour faciliter les choses donner le contenu de [mono]/etc/postfix/main.cf[/mono] ainsi que le fichier de configuration de dovecot qui doit être : [mono]/etc/dovecot/dovecot.conf[/mono].

Si cela peut t’aider, tu peux comparer les configurations que j’ai mis ici [1] avec la tienne, c’est ce que j’utilise sur une raspbian wheezy.

[1] : yeuxdelibad.net/Logiciel-libre/I … .html#mail

en attendant, [mono]due to local problem[/mono], c’est pas terrible comme log :confused:

Ce n’est pas étonnant d’avoir ce problème car de squeeze à wheezy, tu passes de dovecot version 1.x à 2.x. Les configurations entre ces 2 versions sont très différentes.

Un dovecot -n nous permettra de voir clair

[quote=“thuban”]Alors pourrais-tu pour faciliter les choses donner le contenu de [mono]/etc/postfix/main.cf[/mono] ainsi que le fichier de configuration de dovecot qui doit être : [mono]/etc/dovecot/dovecot.conf[/mono].

Si cela peut t’aider, tu peux comparer les configurations que j’ai mis ici [1] avec la tienne, c’est ce que j’utilise sur une raspbian wheezy.

[1] : yeuxdelibad.net/Logiciel-libre/I … .html#mail

en attendant, [mono]due to local problem[/mono], c’est pas terrible comme log :confused:[/quote]
Merci pour le lien qui a l’air sympa, je vais le potasser.
Juste une première observation : port 993, n’est ni ouvert ni redirigé chez moi et ça fonctionnait parfaitement sous Squeeze, c’est nouveau ?
EDIT : trouvé sur wikipedia :

DOVECOT.CONF

[code]serveur:~# cat /etc/dovecot/dovecot.conf

Dovecot configuration file

If you’re in a hurry, see http://wiki2.dovecot.org/QuickConfiguration

“doveconf -n” command gives a clean output of the changed settings. Use it

instead of copy&pasting files when posting to the Dovecot mailing list.

‘#’ character and everything after it is treated as comments. Extra spaces

and tabs are ignored. If you want to use either of these explicitly, put the

value inside quotes, eg.: key = "# char and trailing whitespace "

Default values are shown for each setting, it’s not required to uncomment

those. These are exceptions to this though: No sections (e.g. namespace {})

or plugin settings are added by default, they’re listed only as examples.

Paths are also just examples with the real defaults being based on configure

options. The paths listed here are for configure --prefix=/usr

–sysconfdir=/etc --localstatedir=/var

Enable installed protocols

!include_try /usr/share/dovecot/protocols.d/*.protocol

A comma separated list of IPs or hosts where to listen in for connections.

“*” listens in all IPv4 interfaces, “::” listens in all IPv6 interfaces.

If you want to specify non-default ports or anything more complex,

edit conf.d/master.conf.

listen = *, ::

Base directory where to store runtime data.

#base_dir = /var/run/dovecot/

Name of this instance. In multi-instance setup doveadm and other commands

can use -i <instance_name> to select which instance is used (an alternative

to -c <config_path>). The instance name is also added to Dovecot processes

in ps output.

#instance_name = dovecot

Greeting message for clients.

#login_greeting = Dovecot ready.

Space separated list of trusted network ranges. Connections from these

IPs are allowed to override their IP addresses and ports (for logging and

for authentication checks). disable_plaintext_auth is also ignored for

these networks. Typically you’d specify your IMAP proxy servers here.

#login_trusted_networks =

Sepace separated list of login access check sockets (e.g. tcpwrap)

#login_access_sockets =

With proxy_maybe=yes if proxy destination matches any of these IPs, don’t do

proxying. This isn’t necessary normally, but may be useful if the destination

IP is e.g. a load balancer’s IP.

#auth_proxy_self =

Show more verbose process titles (in ps). Currently shows user name and

IP address. Useful for seeing who are actually using the IMAP processes

(eg. shared mailboxes or if same uid is used for multiple accounts).

#verbose_proctitle = no

Should all processes be killed when Dovecot master process shuts down.

Setting this to “no” means that Dovecot can be upgraded without

forcing existing client connections to close (although that could also be

a problem if the upgrade is e.g. because of a security fix).

#shutdown_clients = yes

If non-zero, run mail commands via this many connections to doveadm server,

instead of running them directly in the same process.

#doveadm_worker_count = 0

UNIX socket or host:port used for connecting to doveadm server

#doveadm_socket_path = doveadm-server

Space separated list of environment variables that are preserved on Dovecot

startup and passed down to all of its child processes. You can also give

key=value pairs to always set specific settings.

#import_environment = TZ

Dictionary server settings

Dictionary can be used to store key=value lists. This is used by several

plugins. The dictionary can be accessed either directly or though a

dictionary server. The following dict block maps dictionary names to URIs

when the server is used. These can then be referenced using URIs in format

“proxy::”.

dict {
#quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
#expire = sqlite:/etc/dovecot/dovecot-dict-sql.conf.ext
}

Most of the actual configuration gets included below. The filenames are

first sorted by their ASCII value and parsed in that order. The 00-prefixes

in filenames are intended to make it easier to understand the ordering.

!include conf.d/*.conf

A config file can also tried to be included without giving an error if

it’s not found:

!include_try local.conf

mail_location = maildir:~/Maildir

protocols = imap

disable_plaintext_auth = yes

ssl= yes

service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0660
# Assuming the default Postfix user and group
user = ricardo # postfix chez Thuban
group = postfix
}
}
[/code]
NOTA :
1/pour ssl, essayé avec ou sans = idem. J’ai aussi essayé de mettre ‘starttls’ à la place mais sans plus de succès.
2/pour l’user, ‘postfix’ était refusé alors qu’avec ‘ricardo’, ça passe (sauf l’histoire de STARTTLS pour l’expédition)

POSTFIX/MAIN.CF

serveur:~# cat /etc/postfix/main.cf
# See /usr/share/postfix/main.cf.dist for a commented, more complete version


# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

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

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = rictux.fr
mydomain = rictux.fr
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = $mydomain
### mydestination = smtp.rictux.fr, localhost.rictux.fr, , localhost
mydestination = rictux.fr, localhost.rictux.fr, localhost
relayhost = 
### mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
home_mailbox = Maildir/

inet_protocols = ipv4

# Activer l'identification SASL
smtpd_sasl_auth_enable = yes

# Utiliser le service d'identification de Dovecot
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

# Noter dans les en-tête des messages l'identifiant de l'utilisateur.
smtpd_sasl_authenticated_header = yes

# Règles pour accepter ou refuser une connexion :
# - on attend une seconde (pour piéger les zombies) ;
# - on interdit la parallélisation là où il n'est pas sensé y en avoir.
smtpd_client_restrictions =
   permit_mynetworks, permit_sasl_authenticated,
   sleep 1, reject_unauth_pipelining

# Règles pour accepter ou refuser un message, dès lors qu'on connaît le nom
# de l'hôte de l'expéditeur (par sa commande HELO ou EHLO) :
# - on refuse les noms d'hôte invalides.
smtpd_helo_restrictions = reject_invalid_helo_hostname

# Règles pour accepter ou refuser un message, dès lors qu'on connaît l'adresse
# de l'expéditeur :
# - s'il vient d'un expéditeur inexistant de notre domaine, on le rejette ;
# - si le domaine de l'expéditeur n'a pas d'IP ou de MX, on le refuse ;
# - s'il vient d'un client sûr ou d'un client authentifié, on l'accepte ;
# - si l'adresse de l'expéditeur n'est pas sous forme canonique, on le refuse.
smtpd_sender_restrictions =
   reject_unlisted_sender, reject_unknown_sender_domain,
   permit_mynetworks, permit_sasl_authenticated,
   reject_non_fqdn_sender

# Règles pour accepter ou refuser un message, dès lors qu'on connaît le
# destinataire (par la commande RCPT TO) :
# - s'il est destiné à un expéditeur forgé chez nous, on le rejette ;
# - s'il est destiné à un domaine forgé, on le rejette ;
# - s'il vient d'un hôte sûr ou d'un client authentifié, on l'accepte ;
# - si l'adresse de destination n'est pas sous forme canonique, on le refuse ;
# - finalement, s'il n'est pas destiné à un domaine que l'on gère ou pour
#   lequel on relaie, on le refuse.
smtpd_recipient_restrictions =
    reject_unlisted_recipient, reject_unknown_recipient_domain,
    permit_mynetworks, permit_sasl_authenticated,
    reject_non_fqdn_recipient,
    reject_unauth_destination

[quote=“fluo”]Ce n’est pas étonnant d’avoir ce problème car de squeeze à wheezy, tu passes de dovecot version 1.x à 2.x. Les configurations entre ces 2 versions sont très différentes.

Un dovecot -n nous permettra de voir clair[/quote]

DOVECOT -N

[code]serveur:~# dovecot -n

2.1.7: /etc/dovecot/dovecot.conf

OS: Linux 3.2.0-4-amd64 x86_64 Debian 7.2

mail_location = maildir:~/Maildir
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date ihave
namespace inbox {
inbox = yes
location =
mailbox Drafts {
special_use = \Drafts
}
mailbox Junk {
special_use = \Junk
}
mailbox Sent {
special_use = \Sent
}
mailbox “Sent Messages” {
special_use = \Sent
}
mailbox Trash {
special_use = \Trash
}
prefix =
}
passdb {
driver = pam
}
plugin {
sieve = ~/.dovecot.sieve
sieve_dir = ~/sieve
}
protocols = imap
service auth {
unix_listener /var/spool/postfix/private/auth {
group = postfix
mode = 0660
user = ricardo
}
}
ssl_cert = </etc/dovecot/dovecot.pem
ssl_key = </etc/dovecot/private/dovecot.pem
userdb {
driver = passwd
}
[/code]

Merci à vous deux pour l’aide :006

D’après tes précédents messages, le souci viendrait plutôt de dovecot. Il faudrait trouver un moyen pour avoir plus de logs!

Juste une question, tu y tiens vraiment au starttls?

Tu l’as déjà dit mais c’est pour être sûr d’avoir bien compris : as-tu essayé avec le protocole imaps, donc en décommentant la ligne [mono]ssl[/mono] du fichier dovecot.conf.

Toujours pour comparer (car là je ne vois pas bien par où chercher), voici ce que me retourne [mono]dovecot -n[/mono]

[code]# 2.1.7: /etc/dovecot/dovecot.conf

OS: Linux 3.6.11+ armv6l Debian 7.2

listen = *
mail_location = maildir:~/Maildir
namespace {
inbox = yes
location =
mailbox {
special_use = \Drafts
name = Drafts
}
mailbox {
special_use = \Junk
name = Junk
}
mailbox {
special_use = \Sent
name = Sent
}
mailbox {
special_use = \Sent
name = Sent Messages
}
mailbox {
special_use = \Trash
name = Trash
}
prefix =
name = inbox
}
passdb {
driver = pam
}
protocols = imap
service replication-notify-fifo {
name = aggregator
}
service anvil-auth-penalty {
name = anvil
}
service auth-worker {
name = auth-worker
}
service {
unix_listener {
group = postfix
mode = 0660
user = postfix
path = /var/spool/postfix/private/auth
}
name = auth
}
service config {
name = config
}
service dict {
name = dict
}
service login/proxy-notify {
name = director
}
service dns-client {
name = dns_client
}
service doveadm-server {
name = doveadm
}
service imap {
name = imap-login
}
service login/imap {
name = imap
}
service indexer-worker {
name = indexer-worker
}
service indexer {
name = indexer
}
service ipc {
name = ipc
}
service lmtp {
name = lmtp
}
service log-errors {
name = log
}
service pop3 {
name = pop3-login
}
service login/pop3 {
name = pop3
}
service replicator {
name = replicator
}
service login/ssl-params {
name = ssl-params
}
service stats-mail {
name = stats
}
ssl_cert = </etc/dovecot/dovecot.pem
ssl_key = </etc/dovecot/private/dovecot.pem
userdb {
driver = passwd
}
protocol lmtp {
service replication-notify-fifo {
name = aggregator
}
service anvil-auth-penalty {
name = anvil
}
service auth-worker {
name = auth-worker
}
service auth-client {
name = auth
}
service config {
name = config
}
service dict {
name = dict
}
service login/proxy-notify {
name = director
}
service dns-client {
name = dns_client
}
service doveadm-server {
name = doveadm
}
service imap {
name = imap-login
}
service login/imap {
name = imap
}
service indexer-worker {
name = indexer-worker
}
service indexer {
name = indexer
}
service ipc {
name = ipc
}
service lmtp {
name = lmtp
}
service log-errors {
name = log
}
service pop3 {
name = pop3-login
}
service login/pop3 {
name = pop3
}
service replicator {
name = replicator
}
service login/ssl-params {
name = ssl-params
}
service stats-mail {
name = stats
}
}
protocol lda {
service replication-notify-fifo {
name = aggregator
}
service anvil-auth-penalty {
name = anvil
}
service auth-worker {
name = auth-worker
}
service auth-client {
name = auth
}
service config {
name = config
}
service dict {
name = dict
}
service login/proxy-notify {
name = director
}
service dns-client {
name = dns_client
}
service doveadm-server {
name = doveadm
}
service imap {
name = imap-login
}
service login/imap {
name = imap
}
service indexer-worker {
name = indexer-worker
}
service indexer {
name = indexer
}
service ipc {
name = ipc
}
service lmtp {
name = lmtp
}
service log-errors {
name = log
}
service pop3 {
name = pop3-login
}
service login/pop3 {
name = pop3
}
service replicator {
name = replicator
}
service login/ssl-params {
name = ssl-params
}
service stats-mail {
name = stats
}
}
protocol imap {
service replication-notify-fifo {
name = aggregator
}
service anvil-auth-penalty {
name = anvil
}
service auth-worker {
name = auth-worker
}
service auth-client {
name = auth
}
service config {
name = config
}
service dict {
name = dict
}
service login/proxy-notify {
name = director
}
service dns-client {
name = dns_client
}
service doveadm-server {
name = doveadm
}
service imap {
name = imap-login
}
service login/imap {
name = imap
}
service indexer-worker {
name = indexer-worker
}
service indexer {
name = indexer
}
service ipc {
name = ipc
}
service lmtp {
name = lmtp
}
service log-errors {
name = log
}
service pop3 {
name = pop3-login
}
service login/pop3 {
name = pop3
}
service replicator {
name = replicator
}
service login/ssl-params {
name = ssl-params
}
service stats-mail {
name = stats
}
[/code]

[quote=“ricardo”]Quand j’essaie d’envoyer avec STARTTLS, j’ai l’alerte suivante :

Transcript of session follows. ... Out: 454 4.7.0 TLS not available due to local problem ...
[/quote]

=> tu as oublié d’activer le ssl (qui sert aussi à activer starttls et tls) dans /etc/dovecot/conf.d/10-ssl.conf

ssl = yes (ou required)

Tu peux aussi (pas obligatoire) activer le paramètre verbose_ssl dans ce même fichier 10-ssl.conf :

verbose_ssl = yes

=> c’est pour avoir plus d’informations dans les logs lorsque tu te connectes en ssl, starttls ou tls.

Puis restarter dovecot

Ensuite dans icedove, pour la configuration de imap, tu mets :
port : 143
sécurité : starttls (et non pas ssl/tls)
authentification : mot de passe normal

[quote=“fluo”]
=> tu as oublié d’activer le ssl (qui sert aussi à activer starttls et tls) dans /etc/dovecot/conf.d/10-ssl.conf

ssl = yes (ou required)

Tu peux aussi (pas obligatoire) activer le paramètre verbose_ssl dans ce même fichier 10-ssl.conf :

verbose_ssl = yes

=> c’est pour avoir plus d’informations dans les logs lorsque tu te connectes en ssl, starttls ou tls.[/quote]En effet, la ligne était commentée : décommenté et verbose ajouté.

[quote=“fluo”]Ensuite dans icedove, pour la configuration de imap, tu mets :
port : 143
sécurité : starttls (et non pas ssl/tls)
authentification : mot de passe normal[/quote]
C’était déjà ainsi et la réception ne pose aucun problème.
Les deux ports : 25 et 143, sont ouvert dans iptables et redirigés dans la box.
Dovecot bien redémarré après toutes les interventions.

MAIS : toujours la même erreur, que ce soit avec STATRTTLS ou SSL/TLS
et expédtion refusée sauf si je mets “mot de passe” dans SMTP

Où aller chercher les logs ?

[quote=“ricardo”]
…expédtion refusée sauf si je mets “mot de passe” dans SMTP

Où aller chercher les logs ?[/quote]
=> si le mot de passe est requis pour l’expédition smtp, c’est normal : tu as dû activer le sasl dans la config postfix. Pour ne pas utiliser le mot de passe à l’expédition, tu dois enlever les paramètres pour le sasl dans main.cf (commentes-les si tu préfères)

Les logs ? => /var/log/mail.log

PS : dans ton dovecot -n, je ne vois pas le paramètre auth_mechanisms.
Dans /etc/dovecot/conf.d/10-auth.conf, tu devrais avoir :

=> car c’est le minimum pour se connecter au serveur imap.

Je vais vérifier tout ça, en attendant, j’étais allé voir mail.log et ce n’est pas très enrichissant :

Nov 26 16:03:08 serveur dovecot: imap-login: Warning: SSL: where=0x2001, ret=1: SSLv3 write finished A [192.168.0.254]

[quote]PS : dans ton dovecot -n, je ne vois pas le paramètre auth_mechanisms.
Dans /etc/dovecot/conf.d/10-auth.conf, tu devrais avoir :

auth_mechanisms = plain login[/quote]

Ligne 99, j’ai [mono]auth_mechanisms = plain[/mono], sans le login :017
Je le rajoute et je teste.

Pas mieux :

L'envoi du message a échoué. Une erreur est survenue lors de l'envoi du courrier : impossible d'établir un lien sécurisé avec le serveur SMTP « rictux.fr » en utilisant « STARTTLS » puisqu'il ne propose pas cette fonctionnalité. Désactivez « STARTTLS » pour ce serveur ou contactez votre fournisseur d'accès à Internet.

Je n’aurais pas intérêt à “remover” et purger Dovecot et ptet aussi Postfix :question: j’ai copie de mon serveur.
Je sais que ce n’est pas dans l’esprit Debian mais parfois, quand on ne trouve pas …

[quote=“ricardo”][quote]PS : dans ton dovecot -n, je ne vois pas le paramètre auth_mechanisms.
Dans /etc/dovecot/conf.d/10-auth.conf, tu devrais avoir :

auth_mechanisms = plain login[/quote]

Ligne 99, j’ai [mono]auth_mechanisms = plain[/mono], sans le login :017
Je le rajoute et je teste.[/quote]
=> login : t’es pas obligé de le mettre. En fait login c’est comme plain sauf qu’il a été crée pour que les clients outlook de microsoft puisse se connecter à ton serveur imap :

=> Pour ce warning, ce n’est rien, car moi aussi je l’ai. C’est comme pour le https, les navigateurs t’affichent une page d’avertissement lorsque le certificat ssl présenté est auto-signé.
En vérité, pour savoir si le tls marche tapes :

openssl s_client -connect localhost:imaps

=> si tu te connecte à distance, remplace localhost par le nom du serveur imap distant.
Source : wiki2.dovecot.org/SSL/DovecotConfiguration

[quote=“ricardo”]Pas mieux :
Code:
L’envoi du message a échoué.
Une erreur est survenue lors de l’envoi du courrier : impossible d’établir un lien sécurisé avec le serveur SMTP « rictux.fr » en utilisant « STARTTLS » puisqu’il ne propose pas cette fonctionnalité. Désactivez « STARTTLS » pour ce serveur ou contactez votre fournisseur d’accès à Internet.
[/quote]
=> cette fois, ce n’est pas au niveau de dovecot, mais au niveau de la configuration ssl de ton main.cf qu’il y a des erreurs.
Et effectivement, tu as des erreurs :

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

smtpd_use_tls=yes => obsolète dans la version de postfix sur wheezy. Il faut utiliser smtpd_tls_security_level = may (ou encrypt si tu veux forcer tls) à la place.

Une des réponses en MP

Donc, si j’ai bien lu, voici ce que j’ai fait :
[mono]### smtpd_use_tls=yes
smtpd_tls_security_level = may[/mono]

Espérons que cette fois ci ça marche.

Bon je sais que ca ne t’aidera pas , puisque tes problemes sous dovecot sont OK et que maintenant ton soucis viens de postfix, mais j’ai eu un flash parceque ce poste me rappelé quelque chose :
dovecot-probleme-avec-la-section-auth-t44714.html#p449731

é_è.

@ Fluo
Malheureusement …NON :angry:
J’ai “restarté” dovecot et postfix

Connecte toi à ton serveur smtp en tapant telnet localhost 25.
Puis après la réponse 220 localhost ESMTP Postfix (Debian/GNU) ,

tapes :

STARTTLS

pour la réponse. Et s’il y a erreur, posts les logs.