• Serveurs
  • [Discussion] Installer un serveur de mail avec Postfix et Dovecot

J'ai fais une demande de certificat à Gandi apparemment c'est offert avec un nom de domaine par contre tu pourrais m'aiguiller un peu sur la configuration à appliquer sur apache je suis un peu pomé là. Merci
Tu as juste à remplacer les certificats du tuto par ceux fournis par Gandi.
Hello,

Dis Hardware, est-ce que tu as testé le plugin pour Rainloop qui autorise le changement de pass directement dans l'interface de rainloop sans forcément passer par Postfix (utile pour les clients)

Merci
Joss47 wrote:Hello,

Dis Hardware, est-ce que tu as testé le plugin pour Rainloop qui autorise le changement de pass directement dans l'interface de rainloop sans forcément passer par Postfix (utile pour les clients)

Merci 😉
Je l'utilise pour mondedie le plugin
Ils expliquent comment l'installer dans ce topic
https://github.com/RainLoop/rainloop-webmail/issues/251
Magicalex, top je trouvais pas justement une doc !

Sinon, est-ce qu'il y a possibilité de pouvoir configurer le serveur mail pour utiliser l'iMAP et le POP ?
Si un jour mon serveur crash et je ne peux pas le récupérer (misère) j'ai tous les mails qui seront perdus à jamais en IMAP, au contraire du POP

Merci d'avance si quelqu'un peut m'aider sur le sujet !
Joss
Je préfère te prévenir avant, Dovecot prend en charge le protocol pop3 mais n'est pas du tout optimisé pour, plus d'info : http://wiki2.dovecot.org/POP3Server De plus, tu peux tout à fait garder une copie locale de tes mails avec IMAP.

Sinon pour activer POP3 :
# /etc/dovecot/dovecot.conf

protocols = imap pop3 lmtp
# /etc/dovecot/conf.d/10-master.conf

service imap-login {

  ...

}

service pop3-login {

  inet_listener pop3 {
    port = 110
  }

  inet_listener pop3s {
    port = 995
    ssl = yes
  }

} 

service imap {

}

service pop3 {

} 

...
Facultatif, permet de modifier quelques paramètres liés à POP3 :
# /etc/dovecot/conf.d/20-pop3.conf

protocol pop3 {

  # mail_max_userip_connections = 10
  # mail_plugins = $mail_plugins quota

} 
service dovecot restart
Cool, merci Hardware !
Je vais voir du coup si je mets le pop3 ou non !

Quand tu dis sauvegarder une copie locale des mails en IMAP, tu parles de les stocker sur l'ordi, donc créer un dossier dans mon client mail et sauvegarder les mails à cet endroit ?
Salut Hardware !

Comme je te l'es dit par MP, j'ai un petit soucis sur ton tutoriel.

En effet, lorsque je souhaite configurer thunderbird, cela me renvoi "Thunderbird n'a pas réussi à trouvé les paramètre de votre compte courrier "

Une idée ??
Ne marche pas non plus et lorsque je regarde mes fichier de log
Cela m'indique :

dovecot : imap-login : Fatal : Can't load ssl_cert : There is no valide PEM certificate
dovecot : master : Error : service (imap-login) : command startup failded, throttling for 32 secs


Serait-il possible que le problème viennent du fait que lorsque j'ai généré les certificat ssl je n'ai pas mis le FQDN de mon server mail ?
Et par consequent est-ce que je peux regénérer les certificats par dessus les autres ?
oui tu peut les refaire je pense ta du louper un truc a ce niveau la peut etre
Toujours le même problème ^^"
J'ai re-taper les commandes pour re-générer les certificats avec les bonnes informations
J'ai effacé les CAroot.crt / mailserver.crt / mailserver.key des dossiers certs/ et private/
J'ai déplacer ceux préalablement généré et j'ai retaper les 2 commande liés au Pem ( d'ailleurs c'est quoi ?)

Si quelqu'un à une solution je prend
Est-il possible de gérer différents domaine sur un même serveur de mail ? Je m'explique, je possède deux nom de domaine qui pointent tous les deux sur un seul et même serveur. Je voudrais pouvoir configurer une adresse mail contact@domain1.tld et contact@fomain2.tld. Pour le moment j'ai bien configurer un domaine et ça fonctionne bien.
J'ai bien vérifier les fichiers de config, je ne voit pas d'erreur.
Je vais copier/coller t'es fichiers de conf et je vais les modifier avec mon domaine pour voir si sa marche je te tiens au jus.
Alors après avoir retaper tous les fichiers de config (à la main car pas de copier coller)...
Je n'arrive plus à me connecter en telnet ^^" -> Connection closed by foreign host
Une idée Hardware ? ^^"
Il vaut mieux copier/coller puis modifier que de réécrire à la main, c'est source d'erreur. Il me faut plus d'information si tu veux que je t'aide.
Bah le problème c'est que je suis sur mac avec vmware fusion et que je n'arrive pas à installer les vmware tools (oui je suis sous VM)

Alors pour te donner plus d'infos j'ai modifier tous les fichiers de config pour coller au mieux avec les tiens.

J'arrive a acceder a postfix avec une autre machine virtuel à distance via l'adresse IP du serveur mail.
Ce que je remarque actuellement c'est lorsque je redemarre postfix via la ligne de commande j'ai des erreurs :
/usr/sbin/postconf : warning /etc/postfix/main.cf : unused parameter : smtp_tls_session_cache_databse = btree:${data_directory}/smtp_scache

Et lorsque je tape telnet localhost 25
Trying :: 1...
Trying 127.0.0.1
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.
OK bon le 1er problème il est régler j'avais mis un S en trop :'(

Aucune erreur lorsque je demarre postfix, ni dovecot

Alors du nouveau !
j'arrive à me connecter en telnet mais ça fige à la ligne $hostname etc etc etc
je vais revérifier mes fichiers de conf postfix :'(
5 jours plus tard
Hello Hardware, je me permet de faire un petit retour après avoir essayé le script hier avec les ajouts que tu as faits (d'ailleurs merci).

Au reload de postfix, j'ai eu ce warning:
[....] Reloading Postfix configuration.../usr/sbin/postconf: warning: /etc/postfix/main.cf: unused parameter: smtpd_relay_restrictions=permit_mynetworks,     reject_unknown_sender_domain,     permit_sasl_authenticated,     reject_unauth_destination
Tout est rentré dans l'ordre une fois les lignes concernées retirées de main.cf.

Autre chose, le règle de Sieve
require ["fileinto"];
 
if header :contains "Subject" "*****SPAM*****" {

    fileinto "Junk";

}
Ne fonctionne pas chez moi, sauf si je remplace "Junk" par "Spam". Voilà voilà ^^

Aliochk
24 jours plus tard
Bonjour,

Tout d'abord merci pour ce tuto qui est l'un des plus clair / complet / à jour que j'ai trouvé, félicitations à l'auteur
Quelques petites remarques :
- dans "6 - Configuration de dovecot", le gist de "dovecot.conf" contient le protocole "sieve" alors qu'il n'est pas encore installé à ce moment du tuto
- toujours dans "", le path dans le code de "10-mail.conf" ne me semble pas correct ("/mail en trop la fin ?")

Sinon j'ai voulu suivre le tuto mais je rencontre un problème avec le SMTP.
J'en suis à la partie 15 après l'installation de RainLoop, j'aimerais regler mon souci avant d'aller plus loin.

Le serveur mail serait "mail.domain.tld" , pour gérer le domaine "domain.tld"

L'IMAP semble fonctionner, mais impossible de faire fonctionner le SMTP sur 3 clients : K9Mail sous Android, ThunderBird sous Mint et Rainloop sur le serveur en question (Debian 7).
Par contre il semblerait que ça fonctionne en ligne de commande :
$ openssl s_client -starttls smtp -crlf -connect mail.domain.tld:587
CONNECTED(00000003)
...

    Start Time: 1428768332
    Timeout   : 300 (sec)
    Verify return code: 18 (self signed certificate)
---
250 DSN
ehlo test
250-mail.domain.tld
250-PIPELINING
250-SIZE 502400000
250-ETRN
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
AUTH PLAIN <mon auth password>
235 2.7.0 Authentication successful
mail from: <arthur@domain.tld>
250 2.1.0 Ok
rcpt to: <arthur@domain2.tld>             
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
test
.
250 2.0.0 Ok: queued as 1D1A4435FF
Bon le message se fait jeter par Google (les mails @domain2.tld sont chez Google) mais c'est un autre problème, au moins il a l'air de partir :
Apr 11 18:05:58 hostname postfix/qmgr[28302]: 1D1A4435FF: from=<arthur@domain.tld>, size=387, nrcpt=1 (queue active)
Apr 11 18:05:59 hostname postfix/smtp[3116]: 1D1A4435FF: host ASPMX.L.GOOGLE.com[173.194.67.26] said: 421-4.7.0 [62.210.66.225      15] Our system has detected an unusual rate of 421-4.7.0 unsolicited mail originating from your IP address. To protect our 421-4.7.0 users from spam, mail sent from your IP address has been temporarily 421-4.7.0 rate limited. Please visit 421-4.7.0 http://www.google.com/mail/help/bulk_mail.html to review our Bulk 421 4.7.0 Email Senders Guidelines. fb2si4864092wib.18 - gsmtp (in reply to end of DATA command)
Apr 11 18:06:00 hostname postfix/smtp[3116]: 1D1A4435FF: to=<arthur@domain2.tld>, relay=ALT1.ASPMX.L.GOOGLE.com[173.194.71.26]:25, delay=17, delays=15/0.01/1.3/0.96, dsn=4.7.0, status=deferred (host ALT1.ASPMX.L.GOOGLE.com[173.194.71.26] said: 421-4.7.0 [62.210.66.225      15] Our system has detected an unusual rate of 421-4.7.0 unsolicited mail originating from your IP address. To protect our 421-4.7.0 users from spam, mail sent from your IP address has been temporarily 421-4.7.0 rate limited. Please visit 421-4.7.0 http://www.google.com/mail/help/bulk_mail.html to review our Bulk 421 4.7.0 Email Senders Guidelines. yi7si3898050lbb.14 - gsmtp (in reply to end of DATA command))
Dans Rainloop, j'ai ce message d'erreur dans la partie SMTP de mon domaine (l'IMAP est ok et fonctionne)
stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
Voilà voilà, j'ai cherché un peu dans tous les sens sans trouver grand chose, si quelqu'un a une idée ça pourrait m'aider

Conf Postfix :
root@hostname:~# hostname 
hostname
root@hostname:~# hostname -f
hostname.domain2.tld
root@hostname:~# cat /etc/postfix/main.cf
#######################
## GENERALS SETTINGS ##
#######################
 
smtpd_banner         = $myhostname ESMTP $mail_name (Debian/GNU)
biff                 = no
append_dot_mydomain  = no
readme_directory     = no
delay_warning_time   = 4h
mailbox_command      = procmail -a "$EXTENSION"
recipient_delimiter  = +
disable_vrfy_command = yes
message_size_limit   = 502400000
mailbox_size_limit   = 1024000000
 
inet_interfaces = all
inet_protocols = ipv4
 
myhostname    = mail.domain.tld
myorigin      = mail.domain.tld
mydestination = localhost localhost.$mydomain hostname.domain.tld
mynetworks    = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 62.210.66.224/27
 
alias_maps     = hash:/etc/aliases
alias_database = hash:/etc/aliases
 
####################
## TLS PARAMETERS ##
####################
 
# SMTP ( OUTGOING )
# ----------------------------------------------------------------------
smtp_tls_loglevel               = 1
smtp_tls_security_level         = may
smtp_tls_CAfile                 = /etc/ssl/certs/CAroot.crt
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
 
# SMTPD ( INCOMING )
# ----------------------------------------------------------------------
smtpd_tls_loglevel            = 1
smtpd_tls_auth_only           = yes
smtpd_tls_security_level      = may
smtpd_tls_received_header     = yes
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3 TLSv1
smtpd_tls_mandatory_ciphers   = high
smtpd_tls_exclude_ciphers     = aNULL, eNULL, EXPORT, MD5, DES, RC4, PSK
 
tls_random_source = dev:/dev/urandom
 
# TLS PUBLIC CERTIFICATES AND PRIVATE KEY
smtpd_tls_CAfile    = /etc/ssl/certs/CAroot.crt
smtpd_tls_cert_file = /etc/ssl/certs/mailserver.crt
smtpd_tls_key_file  = /etc/ssl/private/mailserver.key
 
# TLS/LMTP SESSION CACHE DATABASES
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
lmtp_tls_session_cache_database  = btree:${data_directory}/lmtp_scache
 
# CYPHERS AND CURVE PARAMETERS
smtpd_tls_eecdh_grade  = ultra
tls_eecdh_strong_curve = prime256v1
tls_eecdh_ultra_curve  = secp384r1
 
# DIFFIE-HELLMAN PARAMETERS
smtpd_tls_dh1024_param_file = /etc/postfix/dh2048.pem
smtpd_tls_dh512_param_file  = /etc/postfix/dh512.pem
 
# ----------------------------------------------------------------------
 
#####################
## SASL PARAMETERS ##
#####################
 
smtpd_sasl_auth_enable          = yes
smtpd_sasl_type                 = dovecot
smtpd_sasl_path                 = private/auth
smtpd_sasl_security_options     = noanonymous
smtpd_sasl_tls_security_options = $smtpd_sasl_security_options
smtpd_sasl_local_domain         = $mydomain
smtpd_sasl_authenticated_header = yes
 
broken_sasl_auth_clients = yes
 
##############################
## VIRTUALS MAPS PARAMETERS ##
##############################
 
virtual_uid_maps        = static:5000
virtual_gid_maps        = static:5000
virtual_minimum_uid     = 5000
virtual_mailbox_base    = /var/mail
virtual_transport       = lmtp:unix:private/dovecot-lmtp
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
 
######################
## ERRORS REPORTING ##
######################
 
# notify_classes = bounce, delay, resource, software
notify_classes = resource, software
 
error_notice_recipient     = admin@domain.tld
# delay_notice_recipient   = admin@domain.tld
# bounce_notice_recipient  = admin@domain.tld
# 2bounce_notice_recipient = admin@domain.tld
 
##################
## RESTRICTIONS ##
##################
 
smtpd_recipient_restrictions =
     permit_mynetworks,
     permit_sasl_authenticated,
     reject_non_fqdn_recipient,
     reject_unauth_destination,
     reject_unknown_recipient_domain,
     reject_rbl_client zen.spamhaus.org
 
smtpd_helo_restrictions =
     permit_mynetworks,
     permit_sasl_authenticated,
     reject_invalid_helo_hostname,
     reject_non_fqdn_helo_hostname
     # reject_unknown_helo_hostname
 
smtpd_client_restrictions =
     permit_mynetworks,
     permit_inet_interfaces,
     permit_sasl_authenticated
     # reject_plaintext_session,
     # reject_unauth_pipelining
 
smtpd_sender_restrictions =
     reject_non_fqdn_sender,
     reject_unknown_sender_domain
 
#########################
## MILTERS DKIM/CLAMAV ##
#########################
 
milter_protocol       = 6
milter_default_action = accept
smtpd_milters         = inet:localhost:12301
non_smtpd_milters     = inet:localhost:12301
root@hostname:~# cat /etc/postfix/master.cf
#
# Postfix master process configuration file.  For details on the format
# of the file, see the master(5) manual page (command: "man 5 master").
#
# Do not forget to execute "postfix reload" after editing this file.
#
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      inet  n       -       -       -       -       smtpd
  -o content_filter=spamassassin
#smtp      inet  n       -       -       -       1       postscreen
#smtpd     pass  -       -       -       -       -       smtpd
#dnsblog   unix  -       -       -       -       0       dnsblog
#tlsproxy  unix  -       -       -       -       0       tlsproxy
submission inet n       -       -       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_dh1024_param_file=${config_directory}/dh2048.pem
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_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_client_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
#628       inet  n       -       -       -       -       qmqpd
pickup    fifo  n       -       -       60      1       pickup
cleanup   unix  n       -       -       -       0       cleanup
qmgr      fifo  n       -       n       300     1       qmgr
#qmgr     fifo  n       -       n       300     1       oqmgr
tlsmgr    unix  -       -       -       1000?   1       tlsmgr
rewrite   unix  -       -       -       -       -       trivial-rewrite
bounce    unix  -       -       -       -       0       bounce
defer     unix  -       -       -       -       0       bounce
trace     unix  -       -       -       -       0       bounce
verify    unix  -       -       -       -       1       verify
flush     unix  n       -       -       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       -       -       -       smtp
relay     unix  -       -       -       -       -       smtp
#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq     unix  n       -       -       -       -       showq
error     unix  -       -       -       -       -       error
retry     unix  -       -       -       -       -       error
discard   unix  -       -       -       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       -       -       -       lmtp
anvil     unix  -       -       -       -       1       anvil
scache    unix  -       -       -       -       1       scache
#
# ====================================================================
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
#
# Many of the following services use the Postfix pipe(8) delivery
# agent.  See the pipe(8) man page for information about ${recipient}
# and other message envelope options.
# ====================================================================
#
# maildrop. See the Postfix MAILDROP_README file for details.
# Also specify in main.cf: maildrop_destination_recipient_limit=1
#
maildrop  unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
#
# ====================================================================
#
# Recent Cyrus versions can use the existing "lmtp" master.cf entry.
#
# Specify in cyrus.conf:
#   lmtp    cmd="lmtpd -a" listen="localhost:lmtp" proto=tcp4
#
# Specify in main.cf one or more of the following:
#  mailbox_transport = lmtp:inet:localhost
#  virtual_transport = lmtp:inet:localhost
#
# ====================================================================
#
# Cyrus 2.1.5 (Amos Gouaux)
# Also specify in main.cf: cyrus_destination_recipient_limit=1
#
#cyrus     unix  -       n       n       -       -       pipe
#  user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
#
# ====================================================================
# Old example of delivery via Cyrus.
#
#old-cyrus unix  -       n       n       -       -       pipe
#  flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}
#
# ====================================================================
#
# See the Postfix UUCP_README file for configuration details.
#
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}
root@hostname:~#


Conf Dovecot
root@hostname:~# cat /etc/dovecot/dovecot.conf 
## Dovecot configuration file
 
# Enable installed protocols
!include_try /usr/share/dovecot/protocols.d/*.protocol
protocols = imap lmtp
 
# A space separated list of IP or host addresses where to listen in for
# connections. "*" listens in all IPv4 interfaces. "[::]" listens in all IPv6
# interfaces. Use "*, [::]" for listening both IPv4 and IPv6.
listen = *
 
# 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
root@hostname:~# cat /etc/dovecot/conf.d/10-auth.conf 
## Authentication processes
 
# Disable LOGIN command and all other plaintext authentications unless
# SSL/TLS is used (LOGINDISABLED capability). Note that if the remote IP
# matches the local IP (ie. you're connecting from the same computer), the
# connection is considered secure and plaintext authentication is allowed.
disable_plaintext_auth = yes
 
# Space separated list of wanted authentication mechanisms:
# plain login digest-md5 cram-md5 ntlm rpa apop anonymous gssapi otp skey
# gss-spnego
# NOTE: See also disable_plaintext_auth setting.
auth_mechanisms = plain login
 
#
# Password database is used to verify user's password (and nothing more).
# You can have multiple passdbs and userdbs. This is useful if you want to
# allow both system users (/etc/passwd) and virtual users to login without
# duplicating the system users into virtual database.
#
# <doc/wiki/PasswordDatabase.txt>
#
# User database specifies where mails are located and what user/group IDs
# own them. For single-UID configuration use "static" userdb.
#
# <doc/wiki/UserDatabase.txt>
!include auth-sql.conf.ext
root@hostname:~# cat /etc/dovecot/dovecot-sql.conf.ext 
# Paramètres de connexion
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=<mon password>

# Permet de définir l'algorithme de hachage.
# Pour plus d'information: http://wiki2.dovecot.org/Authentication/PasswordSchemes
# /!\ ATTENTION : ne pas oublier de modifier le paramètre $CONF['encrypt'] de PostfixAdmin
default_pass_scheme = MD5-CRYPT

# Requête de récupération du mot de passe du compte utilisateur
password_query = SELECT password FROM mailbox WHERE username = '%u'
  
root@hostname:~# cat /etc/dovecot/conf.d/10-mail.conf 
mail_location = maildir:/var/mail/vhosts/%d/%n
 
namespace inbox {
    inbox = yes
}
 
mail_uid = 5000
mail_gid = 5000
 
first_valid_uid = 5000
last_valid_uid = 5000
 
mail_privileged_group = vmail
root@hostname:~# cat /etc/dovecot/conf.d/10-master.conf 
service imap-login {
 
  inet_listener imap {
    port = 143
  }
 
  inet_listener imaps {
    port = 993
    ssl = yes
  }
 
  service_count = 0
 
}
 
service imap {
 
}
 
service lmtp {
 
  # On autorise Postfix à transférer les emails dans le spooler de Dovecot via LMTP
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
      mode = 0600
      user = postfix
      group = postfix
  }
 
}
 
service auth {
 
  # On autorise Postfix à se connecter à Dovecot via LMTP
  unix_listener /var/spool/postfix/private/auth {
      mode = 0666
      user = postfix
      group = postfix
  }
 
  # On indique à Dovecot les permissions du conteneur local
  unix_listener auth-userdb {
      mode = 0600
      user = vmail
      group = vmail
  }
 
  user = dovecot
 
}
 
service auth-worker {
 
  user = vmail
 
}
   
root@hostname:~# cat /etc/dovecot/conf.d/10-ssl.conf 
## SSL settings
 
# SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt>
ssl = required
 
# PEM encoded X.509 SSL/TLS certificate and private key. They're opened before
# dropping root privileges, so keep the key file unreadable by anyone but
# root. Included doc/mkcert.sh can be used to easily generate self-signed
# certificate, just make sure to update the domains in dovecot-openssl.cnf
# ssl_cert = </etc/ssl/certs/dovecot.pem
# ssl_key = </etc/ssl/private/dovecot.pem
 
ssl_cert = </etc/ssl/certs/mailserver.crt
ssl_key = </etc/ssl/private/mailserver.key
 
ssl_protocols = !SSLv2 !SSLv3
root@hostname:~# cat /etc/dovecot/conf.d/auth-sql.conf.ext 
# Le mot de passe est obtenu à partir de la base de donnée
passdb {
  driver = sql
  args = /etc/dovecot/dovecot-sql.conf.ext
}

# Par contre le nom d'utilisateur est obtenu de manière statique à partir du conteneur local
# %d = domaine.tld
# %n = utilisateur
userdb {
  driver = static
  args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n
}
Certifs / clés / perms / version
root@hostname:~# ls -l /etc/ssl/certs/CAroot.crt 
-r--r--r-- 1 root root 2106 Apr 11 08:17 /etc/ssl/certs/CAroot.crt
root@hostname:~# ls -l /etc/ssl/certs/mailserver.crt 
-r--r--r-- 1 root root 1988 Apr 11 08:18 /etc/ssl/certs/mailserver.crt
root@hostname:~# ls -l /etc/ssl/private/mailserver.key 
-r-------- 1 root root 3243 Apr 11 08:18 /etc/ssl/private/mailserver.key
root@hostname:~# ls -l /etc/postfix/dh*
-rw-r--r-- 1 root root 424 Apr 11 08:19 /etc/postfix/dh2048.pem
-rw-r--r-- 1 root root 156 Apr 11 08:20 /etc/postfix/dh512.pem
root@hostname:~# uname -a
Linux hostname 3.2.0-4-amd64 #1 SMP Debian 3.2.65-1+deb7u2 x86_64 GNU/Linux
root@hostname:~# dpkg -l | grep postfix
ii  postfix                              2.9.6-2                       amd64        High-performance mail transport agent
ii  postfix-mysql                        2.9.6-2                       amd64        MySQL map support for Postfix
root@hostname:~# dpkg -l | grep dovecot
ii  dovecot-core                         1:2.1.7-7+deb7u1              amd64        secure mail server that supports mbox, maildir, dbox and mdbox mailboxes
ii  dovecot-imapd                        1:2.1.7-7+deb7u1              amd64        secure IMAP server that supports mbox, maildir, dbox and mdbox mailboxes
ii  dovecot-lmtpd                        1:2.1.7-7+deb7u1              amd64        secure LMTP server for Dovecot
ii  dovecot-mysql                        1:2.1.7-7+deb7u1              amd64        MySQL support for Dovecot
Merci d'avance !


@Hardware : tu as toujous l'adresse 1PJyPjCd2wJPptu33BKtaFcMmewHiPaF7c sous la main ?
Aucun protocole ne peut-être utilisé pendant le handshake SSL/TLS, je suppose que l'erreur vient de cette ligne :
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3 TLSv1
Il manque une virgule. La doc de postfix précise que les termes doivent être séparés par des virgules ou des espaces, mais je pense pas qu'on puisse mixer les deux.
arthur wrote:@Hardware : tu as toujous l'adresse 1PJyPjCd2wJPptu33BKtaFcMmewHiPaF7c sous la main ?
Oui
Bien vu pour la virgule, malheureusement cela ne change rien.. Toujours le même message d'erreur dans Rainloop malgré plusieurs essais (avec espaces, avec virgules, sans etc.)
stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
En fait "-o smtpd_tls_wrappermode=yes" permet d'utiliser le port 465, donc d'utiliser un "authentification wrapper" à travers SMTP, ce qui est obsolète de nos jours, on privilégie la connexion par STARTTLS sur le port 587. Généralement, SMTPS (465) est utilisé comme wrapper pour la compatibilité avec des clients mails plus anciens, mais c'est pas vraiment le cas de ceux que tu utilises (rainloop, thunderbird, K9Mail).

Plus d'info :

http://stackoverflow.com/a/19942206

Je pense que le problème vient des paramètres que tu as saisis dans Rainloop, vérifie bien que tu as choisis le port 587 et STARTTLS pour la connexion :

C'était déjà bien config comme ça, "starttls" sur le port 587 dans la partie SMTP mais si je vire le " -o smtpd_tls_wrappermode=yes" je me retrouve dans la situation d'hier.

Sinon entre temps j'ai fini le tuto, tout le reste semble fonctionner... (spf, dkim etc..).
Pour info je compte installer ça aussi (j'avais ça sur mon précédent serveur)
-> http://postgrey.schweikert.ch/

C'est assez bête mais ça peut être efficace quand on reçoit pas mal de spam (ce qui est mon cas avec certaines adresses mails publiques depuis des années sur le net), peut être une partie à ajouter dans ton tuto ?
J'ai utilisé le script, suivi les instructions. Puis j'ai vu dans mes logs que l'adresse du postmaster n'était pas renseigné, j'ai donc corrigé cette erreur.

Désormais je suis capable d'envoyer des mails sans problème mais je ne reçois pas correctement... Je soupçonne une erreur/mauvaise configuration du coté de Dovecot.
En effet, je reçois les mails de Gmail, mais quand j'envoie des mails depuis un compte hotmail/Outlook j'obtient une erreur d'envoi.

Si ce genre de problème est déjà survenu et qu'il existe une solution je vous serais gré de répondre avec un lien vers la solution.

Rainloop fonctionne à merveille. C'est un peu dommage de ne pas pouvoir vraiment utiliser mon serveur pour envoyer des mails tous les jours juste parce que certaines personnes ne pourraient pas me répondre.

Merci d'avance pour votre aide.
bonjour.

(je n'ai pas lu les 15 pages de ce topic désolé si la réponse est déjà dedans)

concernant spamassassin, pour les tâches cron faut-il en créer 2 pour chaque utilisateur?
ou existe t-il un autre moyen (genre utiliser $USER a la place)?
exemple:
# Auto-apprentissage de spam assassin
30 02 * * * /usr/bin/sa-learn --ham /var/mail/vhosts/domain.tld/USER1/mail/cur/*
40 02 * * * /usr/bin/sa-learn --spam /var/mail/vhosts/domain.tld/USER1/mail/.Junk/cur/*
30 02 * * * /usr/bin/sa-learn --ham /var/mail/vhosts/domain.tld/USER2/mail/cur/*
40 02 * * * /usr/bin/sa-learn --spam /var/mail/vhosts/domain.tld/USER2/mail/.Junk/cur/*
....etc..
ou
# Auto-apprentissage de spam assassin
30 02 * * * /usr/bin/sa-learn --ham /var/mail/vhosts/domain.tld/$USER/mail/cur/*
40 02 * * * /usr/bin/sa-learn --spam /var/mail/vhosts/domain.tld/$USER/mail/.Junk/cur/*
.
EDIT:

ha oui et aussi si jamais vous avez une astuce pour que hotmail/outlook ne considère pas mes mail comme des spam merci de m'en informer lol il n'y a que eux qui considèrent mes mail comme spam alors que j'ai même fais en sorte d'utiliser l'ipv6 (j'ai lu que ça pouvait aider..)
RE..

j'ai une autre galère (décidément fff)

c'est concernant les spam et sieve.

thunderbird et les autres logiciels me créent un dossier "spam" dans
"/var/mail/vhosts/tld.com/user/mail/.Spam/cur"

sieve lui ne me créer pas le dossier "junk" et quand je le créer moi même, sieve déplace bien les spam dans ce dossier
mais du coup, thunderbird et les autres ne voient pas ce dossier.
donc j'ai tenter de changer la config mais ça ne fonctionne pas:

nano /var/mail/sieve/default.sieve:
require ["fileinto"];

if header :contains "Subject" "*****SPAM*****" {

    fileinto "Spam";

}
nano /etc/dovecot/conf.d/15-mailboxes.conf:
namespace inbox {
  #prefix = INBOX. # the namespace prefix isn't added again to the mailbox names.
  # ...

  mailbox Trash {
    auto = no
    special_use = \Trash
  }
  mailbox Drafts {
    auto = no
    special_use = \Drafts
  }
  mailbox Sent {
    auto = subscribe # autocreate and autosubscribe the Sent mailbox
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    auto = no
    special_use = \Sent
  }
  mailbox Spam {
    auto = subscribe # autocreate Spam, and autosubscribe
    special_use = \Spam
  }
  mailbox virtual/All { # if you have a virtual "All messages" mailbox
    auto = no
    special_use = \All
  }
}
rm /var/mail/sieve/default.svbin
sievec /var/mail/sieve/default.sieve

après cette cmd j'ai cette erreur:
doveconf: Fatal: Error in configuration file /etc/dovecot/dovecot.conf: mailbox Spam: unknown special_use: \Spam
service dovecot restart
et je me retrouve avec cette erreur:
doveconf: Error: managesieve-login: dump-capability process returned 89
doveconf: Fatal: Error in configuration file /etc/dovecot/dovecot.conf: mailbox Spam: unknown special_use: \Spam
 failed!
donc là je suis perdu

EDIT:
bon finalement j'ai laissé la config "/etc/dovecot/conf.d/15-mailboxes.conf" avec "Junk" a la place de "Spam"
et ça fonctionne quand-même
5 jours plus tard
Coucou,

Dîtes, ou puis-je retrouver l'utilisateur et mdp pour accéder à mon interface admin de Rainloop ?
Si par exemple un gros boulet (moi) oublie l'user et mot de passe qu'il a noté

Merci bien
A priori tu peux le reset en allant éditer le fichier :
<document_root>/data/_data_<quelquechose>/_default_/configs/application.ini    
Visiblement il suffit de reset la clé "admin_password" par un pass en clair (qui rera remplacé par un pass haché lors du prochain reset / changement de pass via l'admin)
Au top, merci Arthur, j'ai eu accès à mon utilisateur, du coup ça m'évite de changer le pass
Parfait, merci bien
Bonjour,

Je n'ai pas vu mon problème dans les pages précédentes, et à la vue du nombre de retours sur le tuto, c'est bien moi qui ait un problème et non le tuto.

Je suis à la première connexion avec un client mail, et là, la connexion ne se fait pas avec le serveur.Voici les logs (mail.log)
Apr 24 10:37:41 vps dovecot: auth-worker(2960): Error: mysql(127.0.0.1): Connect failed to database (postfix): Access denied for user 'vmail'@'localhost' (using password: YES) - waiting for 1 seconds before retry
Moi y en a comprendre le message... mais pourquoi que vmail il voudrait se connecter à la bdd, alors que c'est à postfix de le faire ?

Une idée d'où ça coince ?

J'ai relu le tuto 3 fois. Je m'en vais pour la quatrième fois, en attendant....

Merci pour votre lecture

PS : J'utilise Apache2 et non nginx, mais je ne suis pas persuadé que ça change grand chose au schilimiliblick....
Il est possible que cela soit du au fait que mon mdp d'accès à SQL utilise des caractères spéciaux. Je vais modifier tout ça, et je vous tiens au courant.

EDIT : non, ce n'est pas ma solution.....
Bonjour,

j'avais la meme erreur que toi, j'ai changer 127.0.0.1 par localhost dans les 3 fichiers sql et ca fonctionne
un mois plus tard
15 jours plus tard
Bonjour

Tout d'abord merci pour ce tuto.
Grâce à celui-ci, j'ai pu installer mon serveur de messagerie sur un Debian 7. cool

J'ai un problème sur la partie 12.
La partie configuration se passe très bien. J'ai bien fait attention à remplacer domain.tld par mon nom de domaine.
J'ai généré et affiché ma clef publique.
Maintenant j'essaie de l'intégrér sur mon compte Gandi mais là j'ai un problème.
En interface simple, j'ai le message d'erreur suivant : La valeur et/ou la priorité MX est incorrecte.
Ma priorité MX est de 10.

J'ai essayé d'intégrer cette valeur en mode expert mais ça ne fonctionne pas non plus.

quelqu'un a-t-il une idée de pourquoi ça ne fonctionne pas ?

Merci d'avance à ce qui pourront m'aider

PS : dans certains fichiers de configuration DKIM, on indique que la valeur selecteur (en italique) mail._domainkey dépend de la variable Selector indiqué dans opendkim.conf or dans le tuto il n'y a pas de valeur selector. je suis tombé sur un article incomplet ?