Je suis actuellement en stage dans une boite d'info et j'ai des problèmes pour déployer un serveur mail, sur la base d'un backup (de la plupart) des fichiers de configuration d'un serveur mail sous mandrake ayant rendu l'âme.
Le serveur mail est un Postfix, avec une authentification SMTP passant par Cyrus-SASL et des certificats pour le SSL.
On relève les mails en POP3 avec Postfix directement, tandis que les mails en IMAP sont relevés avec Cyrus-IMAP.
La liste des utilisateurs est partagée par Postfix et Cyrus et est stockée dans une base de données sasldb. Cette dernière n'ayant pû etre backupée, j'ai juste crée quelques utilisateurs pour pouvoir tester le tout.
Le fait est que les fichiers de conf de Postfix/Cyrus sur l'ancien serveur mail étaient sur une mandrake avec un postfix ancienne version (2.1si mes souvenirs sont bons) alors que maintenant c'est une Debian avec la dernière version de Postfix en date. N'ayant pas encore beaucoup de connaissances sur les serveurs mails j'ai donc deja pas mal galéré à retrouver les bons paths pour que le tout ne plante pas dès le lancement.
Maintenant, j'arrive deja à envoyer des mails avec authentification en SSL par outlook, la commande de test telnet localhost 25 sur le serveur fonctionne, ainsi que
testsaslauthd -u username -p password
sachant que j'ai crée des utilisateurs de la manière suivante :
saslpasswd2 david -u telecom.setec.fr
postmap /var/lib/sasl2/recipients
Mais voilà, impossible d'envoyer de mails, ou plutot de me connecter au serveur de mails, ni en passant par POP3 ni par IMAP.
Par ailleurs, lorsque je teste sur le serveur les services pop3 et imap avec telnet localhost 110 ou 143
J'obtiens : Unable to connect to remote host: Connection refused
Et je n'arrive pas a créer de boite mail pour les utilsateurs, puisque lorsque je tape:
cyradm localhost en tant qu'utilsateur cyrus ou meme root,
J'ai :
cyradm : cannot connect to server
alors que la commande /etc/init.d/cyrus2.2 lance bien le tout.
Je vois donc bien que le problème de réception de mail vient du service POP3 de Postfix et du service IMAP de Cyrus-IMAP qui ne veulent pas démarrer ou sont mal configurés, mais apres moult tentatives je n'arrive tjrs pas a établir de connection.
Peut etre quelqu'un pourrait-il m'aider :)?
Je mets ici mes fichiers de conf, je ne les ai pas bcp retouchés sachant que la majorité de la configuration provient de l'ancien serveur:
Fichier /etc/postfix/main.cf
# These are changed by postfix install script
readme_directory = /usr/share/doc/postfix-2.1.5/README_FILES
sample_directory = /usr/share/doc/postfix-2.1.5/samples
html_directory = /usr/share/doc/postfix-2.1.5/html
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
command_directory = /usr/sbin
manpage_directory = /usr/share/man
daemon_directory = /usr/lib/postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
queue_directory = /var/spool/postfix
mail_owner = postfix
# User configurable parameters
inet_interfaces = all
mynetworks_style = subnet
delay_warning_time = 30m
bounce_queue_lifetime = 3d
mailbox_size_limit = 102400000
message_size_limit = 66000000
smtpd_banner = $myhostname ESMTP $mail_name ($mail_version) (Mandrake Linux)
unknown_local_recipient_reject_code = 450
smtp-filter_destination_concurrency_limit = 2
lmtp-filter_destination_concurrency_limit = 2
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_recipient_restrictions = permit_sasl_authenticated, reject_unauth_destination
local_recipient_maps = $alias_maps, hash:/var/lib/sasl2/recipients
smtpd_sasl_path = /etc/postfix/sasl:/usr/lib/sasl2
recipient_delimiter = +
owner_request_special = no
alias_maps = hash:/etc/postfix/aliases
# , hash:/var/lib/mailman/data/aliases
myorigin = $mydomain
mydestination = $myhostname localhost.$mydomain $mydomain
mailbox_transport = lmtp:unix:/var/lib/imap/socket/lmtp
transport_maps = hash:/etc/postfix/transport_maps
smtpd_use_tls = yes
smtpd_tls_loglevel = 2
smtpd_tls_CAfile = /etc/ssl/postfix/cacert.pem
smtpd_tls_cert_file = /etc/ssl/postfix/primary.cert.pem
smtpd_tls_key_file = /etc/ssl/postfix/primary.key.pem
smtpd_use_tls = yes
mtpd_tls_auth_only = yes
/etc/postfix/master.cf:
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
# ==========================================================================
smtp inet n - n - - smtpd
#submission inet n - n - - smtpd
# -o smtpd_etrn_restrictions=reject
smtps inet n - n - - smtpd
-o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
submission inet n - n - - smtpd
# -o smtpd_etrn_restrictions=reject
# -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes
#628 inet n - n - - qmqpd
pickup fifo n - n 60 1 pickup
-o content_filter=
-o receive_override_options=
cleanup unix n - n - 0 cleanup
qmgr fifo n - n 300 1 qmgr
#qmgr fifo n - n 300 1 oqmgr
tlsmgr unix - - n 300 1 tlsmgr
rewrite unix - - n - - trivial-rewrite
bounce unix - - n - 0 bounce
defer unix - - n - 0 bounce
trace unix - - n - 0 bounce
verify unix - - n - 1 verify
flush unix n - n 1000? 0 flush
proxymap unix - - n - - proxymap
smtp unix - - n - - smtp
relay unix - - n - - smtp
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq unix n - n - - showq
error unix - - n - - error
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - n - - lmtp
anvil unix - - n - 1 anvil
#
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
#
# maildrop. See the Postfix MAILDROP_README file for details.
#
maildrop unix - n n - - pipe
flags=DRhu user=nobody argv=/usr/bin/maildrop -d ${recipient}
cyrus-deliver unix - n n - - pipe
user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -r ${sender} -m ${extension} ${user}
#
# for default cyrus socket placement
cyrus unix - n n - - lmtp
-o lmtp_cache_connection=yes
#
# if you configure cyrus socket in the chroot jail
cyrus-chroot unix - - y - - lmtp
-o lmtp_cache_connection=yes
#
# for lmtp to cyrus via tcp
cyrus-inet unix - - y - - lmtp
-o lmtp_cache_connection=yes
-o lmtp_sasl_auth_enable=yes
-o lmtp_sasl_password_maps=hash:/etc/postfix/cyrus_lmtp_sasl_pass
-o lmtp_sasl_security_options=noanonymous
uucp unix - n n - - pipe
flags=Fqhu user=uucp argv=/usr/bin/uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
127.0.0.1:10026 inet n - n - - smtpd
-o content_filter=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o mynetworks_style=host
-o strict_rfc821_envelopes=yes
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
-o smtpd_client_connection_limit_exceptions=127.0.0.0/8
lmtp-filter unix - - n - - lmtp
-o lmtp_data_done_timeout=1200
-o disable_dns_lookups=yes
smtp-filter unix - - n - - smtp
-o smtp_data_done_timeout=1200
-o disable_dns_lookups=yes
##### END OF CONTENT FILTER CUSTOMIZATIONS #####
Le fichier /etc/postfix/sasl/smtpd.conf:
# SASL library configuration file for postfix
# all parameters are documented into:
# /usr/share/doc/cyrus-sasl-2.*/options.html
# The mech_list parameters list the sasl mechanisms to use,
# default being all mechs found.
mech_list: plain login
# To authenticate using the separate saslauthd daemon, (e.g. for
# system or ldap users). Also see /etc/sysconfig/saslauthd.
#pwcheck_method: saslauthd
#saslauthd_path: /var/lib/sasl2/mux
# To authenticate against users stored in sasldb.
pwcheck_method: auxprop
auxprop_plugin: sasldb
#sasldb_path: /var/lib/sasldb2
Ficher /etc/cyrus.conf:
# standard standalone server implementation
START {
# do not delete this entry!
recover cmd="ctl_cyrusdb -r"
# this is only necessary if using idled for IMAP IDLE
# idled cmd="idled"
}
# UNIX sockets start with a slash and are put into /var/lib/imap/sockets
SERVICES {
# add or remove based on preferences
# imap cmd="imapd" listen="imap" prefork=5
imaps cmd="imapd -s" listen="imaps" prefork=10
# pop3 cmd="pop3d" listen="pop3" prefork=3
pop3s cmd="pop3d -s" listen="pop3s" prefork=10
# sieve cmd="timsieved" listen="sieve" prefork=0
# these are only necessary if receiving/exporting usenet via NNTP
# nntp cmd="nntpd" listen="nntp" prefork=3
# nntps cmd="nntpd -s" listen="nntps" prefork=1
# at least one LMTP is required for delivery
# lmtp cmd="lmtpd" listen="lmtp" prefork=0
lmtpunix cmd="lmtpd" listen="/var/lib/imap/socket/lmtp" prefork=1
# this is only necessary if using notifications
# notify cmd="notifyd" listen="/var/lib/imap/socket/notify" proto="udp" prefork=1
}
EVENTS {
# this is required
checkpoint cmd="ctl_cyrusdb -c" period=30
# this is only necessary if using duplicate delivery suppression,
# Sieve or NNTP
delprune cmd="cyr_expire -E 3" at=0400
# this is only necessary if caching TLS sessions
tlsprune cmd="tls_prune" at=0400
}
Et enfin /etc/mapd.conf:
configdirectory: /var/lib/cyrus
partition-default: /var/spool/cyrus/mail
admins: cyrus
allowanonymouslogin: no
sieveusehomedir: no
sievedir: /var/spool/sieve
sendmail: /usr/sbin/sendmail
hashimapspool: true
sasl_pwcheck_method: auxprop
sasl_mech_list: PLAIN
tls_ca_file: /etc/ssl/cyrus-imapd/cacert.pem
tls_cert_file: /etc/ssl/cyrus-imapd/primary.cert.pem
tls_key_file: /etc/ssl/cyrus-imapd/primary.key.pem
postuser: archives
autocreatequota: 100000
autocreateinboxfolders: INBOX
defaultacl: anyone all
lmtp_downcase_rcpt: 1
# EDIT
Posté par David . Évalué à 1.
En effet, comme j'ai activé l'authentification SSL, ce sont les ports 995 et 993 auxquels il faut se connecter et non 110 et 143
# Partie IMAP - POP / IMAPS - POP3s
Posté par Mathieu Rodat . Évalué à 3.
Je pense que l'erreur vient de ceci:
il faut autoriser la connexion en imap et en pop3 en local et autoriser aussi en imap et pop3 sur l'exterieur mais avec des fichiers de configuration différents.
Ceci pour permettre de se connecter en local et d'administrer les BàLs et uniquement de se connecter au boite depuis l'extérieur mais impossible d'administrer les BàLs (sécurité).
cyrus.conf:
imap cmd="imapd -U 30" listen="imap" prefork=0 maxchild=30
imaplocal cmd="imapd -C /etc/imapd-local.conf" listen="localhost:imap" prefork=0 maxchild=30
#imaps cmd="imapd -s -U 30" listen="toto:imaps" prefork=0 maxchild=30
pop3local cmd="pop3d -C /etc/pop3d-local.conf" listen="localhost:pop3" prefork=0 maxchild=50
pop3 cmd="pop3d -U 30" listen="localhost:pop3" prefork=0 maxchild=50
#pop3s cmd="pop3d -s -U 30" listen="toto:pop3s" prefork=0 maxchild=50
La suite, je ne montre que pour imap.
imapd-local.conf
ce fichier est IDENTIQUE à imapd.conf
imapd.conf
il faut suffit de commenter uniquement dans ce fichier la ligne
admins: cyrus
Relancer Cyrus.
Une fois que cela marche, on commente dans cyrus.conf les lignes pop3 et imapd et on décommente les lignes pop3s et imaps. Puis on relance Cyrus.
[^] # Re: Partie Cyrus-SASL
Posté par Mathieu Rodat . Évalué à 2.
La base de donnée sasldb2 est utilisée par postfix et par Cyrus.
Il faut faire la distinction entre le nom de la machine et le nom du serveur de messagerie
Le nom de la machine est machine.linuxfr.org
Le nom de la messagerie est imap.linuxfr.org
Création d'une BàL pour l'utilisateur toto
cyradmin -u cyrus localhost
cm user.toto
quit
Création du mot de passe Cyrus-SASL en fonction de myhostname (cf conf postfix)
sudo saslpasswd2 -u `postconf -h myhostname` -d toto
sudo sasldblistusers2
toto@imap.linuxfr.org: userPassword
Là encore faire d'abord une authentification pour imap puis pour smtp.
Une grosse aide
rajouter -v après imapd et pop3 dans cyrus.conf et après smtpd dans master.cf
puis faire
sudo tail -f /var/log/mail.log
++
# Faire fonctonner POP3s avec cyrus-IMAP
Posté par David . Évalué à 1.
En fait , au lieu de partir de ces fichiers de conf un peu vieux, j'ai préféré prendre les fichiers de conf par défaut et les adapter le mieux possible à l'ancienne conf, tout en tenant compte de vos conseils
Apres avoir bcp lutté, je suis enfin parvenu a faire fonctionner postfix pour le smtp avec cyrus sasl, et cyrus-imap pour l'IMAP.
Maintenant, il faut aussi que je remette en place le POP3, car les utilisateurs doivent pouvoir accéder à leurs mails en IMAP, mais aussi en POP3 avec le meme compte.
Le problème que je rencontre, c'est que dans le log /var/log/mail.info, j'ai le message suivant:
cyrus/master :WARNING :cannot find executable for service pop3 :ignored
cyrus/master :WARNING :cannot find executable for service pop3s :ignored
cyrus/master :WARNING :cannot find executable for service nntp :ignored
Avec outlook,j'arrive donc a récupérer mes mails en IMAP mais pas en pop3.
Que faut il que j'active dans cyrus-IMAP pour que celui ci prenne également en charge le pop3?
Revoici le fichier cyrus.conf :
START {
# do not delete this entry!
recover cmd="/usr/sbin/ctl_cyrusdb -r"
# this is only necessary if idlemethod is set to "idled" in imapd.conf
#idled cmd="idled"
# this is useful on backend nodes of a Murder cluster
# it causes the backend to syncronize its mailbox list with
# the mupdate master upon startup
#mupdatepush cmd="/usr/sbin/ctl_mboxlist -m"
# this is recommended if using duplicate delivery suppression
delprune cmd="/usr/sbin/cyr_expire -E 3"
# this is recommended if caching TLS sessions
tlsprune cmd="/usr/sbin/tls_prune"
}
# UNIX sockets start with a slash and are absolute paths
# you can use a maxchild=# to limit the maximum number of forks of a service
# you can use babysit=true and maxforkrate=# to keep tight tabs on the service
# most services also accept -U (limit number of reuses) and -T (timeout)
SERVICES {
# --- Normal cyrus spool, or Murder backends ---
# add or remove based on preferences
imap cmd="imapd -U 30" listen="imap" prefork=0 maxchild=100
imaps cmd="imapd -s -U 30" listen="imaps" prefork=0 maxchild=100
pop3 cmd="pop3d -U 30" listen="pop3" prefork=0 maxchild=50
pop3s cmd="pop3d -s -U 30" listen="pop3s" prefork=0 maxchild=50
nntp cmd="nntpd -U 30" listen="nntp" prefork=0 maxchild=100
#nntps cmd="nntpd -s -U 30" listen="nntps" prefork=0 maxchild=100
# At least one form of LMTP is required for delivery
# (you must keep the Unix socket name in sync with imap.conf)
#lmtp cmd="lmtpd" listen="localhost:lmtp" prefork=0 maxchild=20
lmtpunix cmd="lmtpd" listen="/var/run/cyrus/socket/lmtp" prefork=0 maxchild=20
# ----------------------------------------------
# useful if you need to give users remote access to sieve
# by default, we limit this to localhost in Debian
sieve cmd="timsieved" listen="localhost:sieve" prefork=0 maxchild=100
# this one is needed for the notification services
notify cmd="notifyd" listen="/var/run/cyrus/socket/notify" proto="udp" prefork=1
}
EVENTS {
# this is required
checkpoint cmd="/usr/sbin/ctl_cyrusdb -c" period=30
# this is only necessary if using duplicate delivery suppression
delprune cmd="/usr/sbin/cyr_expire -E 3" at=0401
# this is only necessary if caching TLS sessions
tlsprune cmd="/usr/sbin/tls_prune" at=0401
# indexing of mailboxs for server side fulltext searches
# reindex changed mailboxes (fulltext) approximately every other hour
#squatter_1 cmd="/usr/bin/nice -n 19 /usr/sbin/squatter -s" period=120
# reindex all mailboxes (fulltext) daily
#squatter_a cmd="/usr/sbin/squatter" at=0517
}
Merci!
[^] # Re: Faire fonctonner POP3s avec cyrus-IMAP
Posté par David . Évalué à 1.
Reste plus qu'a recréer les comptes des utilisateurs (le fichier de sasldb n'a pu est backupé) et de restaurer tous les mails et ca sera bon !
[^] # Re: Faire fonctonner POP3s avec cyrus-IMAP
Posté par David . Évalué à 1.
Si je copie texto tout le contenu de /var/spool/cyrus du backup vers le nouveau serveur, cyradm ne voit pas tout le contenu restoré, normal puisqu'il doit surement consulter la base de données et non /var/spool/cyrus.
Le seul moyen que je vois pour récup toutes les boites mail avec les sous rép est de recréer à la main les boites , puis ensuite de copier tout l'ancien /var/lib/cyrus/.
Encore que je ne suis pas sûr que cela récupère les sous répertoires créés par les utilisateurs, car eux aussi doivent etre dans mailboxes.db....
Quelqu'un voit il un moyen de tout récup sans faire cela?
Merci :)
[^] # Re: Faire fonctonner POP3s avec cyrus-IMAP
Posté par Mathieu Rodat . Évalué à 1.
Voici donc les liens:
http://artisan.karma-lab.net/sauvetage-d-une-base-cyrus-corrompue
http://www.ufoot.org/more/blog/misc/howto/cyrus-recovery?lang=fr
Malheureusement (ou heureusement pour moi) je n 'ai jamais utilisé ces procédures.
Si tu peux donner ton avis sur ces procèdures.
Merci
[^] # Re: Faire fonctonner POP3s avec cyrus-IMAP
Posté par David . Évalué à 1.
J'ai testé les procédures de liens.
Le script proposé n'a pas marché du 1er coup, il a fallu que je modifie un peu l'expression dans SED pour obtenir un fichier dump ayant EXACTEMENT la meme syntaxe que ctl_mboxlist -d, à l'espace et tabulation près!
Je souligne bien l'importance d'avoir un fichier parfait car une mini différence m'a fait perdre presque une journée !
Sinon en fin de compte j'ai bien réussi a récupérer tout ce dont javais besoin, sauf les flags lu/non lu ce qui n'est pas grave :)
[^] # Re: Faire fonctonner POP3s avec cyrus-IMAP
Posté par Mathieu Rodat . Évalué à 1.
http://artisan.karma-lab.net/sauvetage-d-une-base-cyrus-corrompue
[^] # Re: Faire fonctonner POP3s avec cyrus-IMAP
Posté par David . Évalué à 1.
Cependant, je n'arrive pas a envoyer de mails vers l'extérieur avec Outlook 2003 : j'obtiens :
Aug 9 15:58:31 primary postfix/smtpd[4091]: TLS connection established from unknown[192.168.116.2]: TLSv1 with cipher RC4-MD5 (128/128 bits)
Aug 9 15:58:31 primary postfix/smtpd[4091]: NOQUEUE: reject: RCPT from unknown[192.168.116.2]: 554 5.7.1 <qqun@supinfo.com>: Relay access denied; from=<moi@telecom.setec.fr> to=<qqun@supinfo.com> proto=ESMTP helo=
Ca doit passer avec du SMTPS en ssl , j'ai testé avec les ports 25 et 465 mais ca donne le meme message d'erreur qu'en haut.
Dans le main.cf de postfix, j'ai activé le SSL par cyrus-SASL, et j'ai
# SASL Auth Settings
smtpd_sasl_path = smtpd
#smtpd_sasl_path = /etc/postfix/sasl:/usr/lib/sasl2
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions =permit_sasl_authenticated,permit_mynetworks, reject_unauth_destination
# TLS parameters
smtpd_tls_loglevel = 2
smtpd_tls_CAfile=/etc/ssl/postfix/cacert.pem
smtpd_tls_cert_file=/etc/ssl/postfix/primary.cert.pem
smtpd_tls_key_file=/etc/ssl/postfix/primary.key.pem
smtpd_use_tls=yes
smtpd_tls_auth_only = yes
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache
Je me fais donc jeter car Outlook est trop bete pour arriver a se logger en SSL.
Je dis bien outlook car avec TBird, ca marche niquel, que ce soit en port 465 ou 25!!
Quelqu'un sait t-il cmt s'en sortir en gardant l'authentification?
Car la plupart des clients bougent bcp (pas d'IP fixe) et ont outlook, et je dois garder l'authentification car sinon ca devient un open-relay si je mets mynetworks = all pour que ca marche par exemple....
[^] # SMTPS + Outlook
Posté par Mathieu Rodat . Évalué à 1.
smtps inet n - - - - smtpd
-o smtpd_sasl_auth_enable=yes
-o smtpd_tls_wrappermode=yes <===
-o smtpd_sasl_security_options=noanonymous
Sinon je donne encore qq liens à lire:
http://jamm.sourceforge.net/contrib_docs/jamm-sasl-tls.txt
http://lists.debian.org/debian-isp/2004/11/msg00019.html
http://www.employees.org/docs/SSL-Howto-Outlook
http://www.physics.ucsb.edu/~pcs/email/outlook_2003/outlook_2003_secure.html
http://courrier.enst-bretagne.fr/configuration/outlook.pdf
Une fois terminer, peux tu mettre la totalité de ta configuration (moins les données privées, bien sûr) sur le forum, merci d'avance
[^] # Re: SMTPS + Outlook
Posté par David . Évalué à 1.
En fait, j'avais deja les réglages que tu as donné dans le master.cf
Le problème est que dans le fichier /etc/postfix/sasl/smtpd.conf,
j'avais mis mech_list : PLAIN, alors que cet arriéré d'outlook s'authentifie en ssl par la méthode LOGIN !
Heureusement que j'avais en permanence un tail -f /var/log/mail.info pour voir ce qu'il se passait.
C'est vraiment une aberration, m'enfin en ajoutant LOGIN ca marche maintenant correctement !
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.