Bonjour,
Je ne m'en sors pas entre postfix, dovecot et ldap.
Je suis sous debian lenny. Je souhaite tout simplement faire un serveur de mail, basé sur un webmail, avec des utilisateurs virtuels.
Et là, c'est le drame.
Invariablement, je tombe sur 'user unknown' lors de la distribution locale.
utilisateur vmail(1000) et groupe mail(8) propriétaires des boites virtuelles
machine: mymachine
domaine: myhost.mydomain
utilisateurs virtuels: user1, user2 suivant schema inetOrgPerson:
sn: user1
cn: mon user1
uid: user1
mail: user1@myhost.mydomain
userPasswd: pass1
ldap en bind avec admin: dn= cn=admin,dc=myhost,dc=mydomain
J'ai donc: config LDAP : uniquement des inetOrgPerson, avec un 2 utilisateurs, filtrés par leur uid. ldapsearch et testsaslauthd me semblent correct (ils renvoient bien les infos attendues). Même si je ne pense pas utiliser sasl dans postfix pour debugguer mon souci configuration de Dovecot: je me connecte bien en telnet localhost 143, - login user1 pass1 me renvoie OK. Du coup, j'ai accès via ma webmail aux dossiers IMAPs, qui sont crée lors du premier accès avec un utilisateur virtuel via ma webmail *configuration de postfix: j'ai défini Dovecot en LDA, postmap -q user1@myhost.mydomain ldap:/etc/postfix/ldap.cf me renvoit bien user1@myhost.mydomain
Si vous aviez des points me permettant de tester précisement soit dovecot soit ldap, soit postfix, merci à vous, j'ai passé bcp de temps là dessus sans entrevoir une solution, malgré les innombrables tutos sur le net. J'ai un tiret dans le nom de mon hôte, du coup avec une méthode de test précise ca m'aiderait peut-être à séparer ce qui marche de ce qui ne marche pas :(
Merci !
le log système:
Apr 6 21:15:37 mymachine postfix/smtpd[8857]: connect from localhost.localdomain[127.0.0.1]
Apr 6 21:15:37 mymachine postfix/smtpd[8857]: C703941C20C: client=localhost.localdomain[127.0.0.1]
Apr 6 21:15:37 mymachine postfix/cleanup[8860]: C703941C20C: message-id=<1f9c-4d9cbc00-13-3dbe5fc0@212200418>
Apr 6 21:15:37 mymachine postfix/smtpd[8857]: disconnect from localhost.localdomain[127.0.0.1]
Apr 6 21:15:37 mymachine postfix/qmgr[8526]: C703941C20C: from=<user1@myhost.mydomain>, size=561, nrcpt=1 (queue active)
Apr 6 21:15:37 mymachine postfix/pipe[8861]: C703941C20C: to=<user2@myhost.mydomain>, relay=dovecot, delay=0.17, delays=0.15/0.01/0/0.02, dsn=5.1.1, status=bounced (user unknown)
Apr 6 21:15:37 mymachine postfix/cleanup[8860]: E360C41C20D: message-id=<20110406191537.E360C41C20D@mymachine.myhost.mydomain>
Apr 6 21:15:37 mymachine postfix/bounce[8863]: C703941C20C: sender non-delivery notification: E360C41C20D
Apr 6 21:15:37 mymachine postfix/qmgr[8526]: E360C41C20D: from=<>, size=2404, nrcpt=1 (queue active)
Apr 6 21:15:37 mymachine slapd[8535]: <= bdb_equality_candidates: (uid) not indexed
Apr 6 21:15:37 mymachine postfix/qmgr[8526]: C703941C20C: removed
Apr 6 21:15:37 mymachine postfix/pipe[8861]: E360C41C20D: to=<user1@myhost.mydomain>, relay=dovecot, delay=0.06, delays=0.03/0/0/0.03, dsn=5.1.1, status=bounced (user unknown)
Apr 6 21:15:38 mymachine postfix/qmgr[8526]: E360C41C20D: removed
mon main.cf:
myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
append_dot_mydomain = no
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
myhostname = mymachine.myhost.mydomain
mailbox_maps = ldap:/etc/postfix/ldap-accounts.cf
alias_maps = ldap:/etc/postfix/ldap-aliases.cf
mydestination = myhost.mydomain, mymachine.myhost.mydomain, localhost.localdomain, localhost
relayhost =
mynetworks = 127.0.0.0/8
local_transport = dovecot
mailbox_size_limit = 51200000
recipient_delimiter = +
inet_interfaces = all
inet_protocols = ipv4
mon master.cf, d'origine avec ajouté:
dovecot unix - n n - - pipe
flags=DRhu user=vmail:mail argv=/usr/lib/dovecot/deliver -d $recipient
ldap-accounts.cf:
server_host = localhost
server_port = 389
search_base = dc=myhost,dc=mydomain
query_filter = (&(objectClass=inetOrgPerson)(mail=%s))
result_attribute = uid
bind = yes
bind_dn = cn=admin,dc=myhost,dc=mydomain
bind_pw = adminpassword
version = 3
ldap-aliases.cf:
server_host = localhost
server_port = 389
search_base = dc=myhost,dc=mydomain
query_filter = (&(objectClass=inetOrgPerson)(mail=%s))
result_attribute = mail
bind = yes
bind_dn = cn=admin,dc=myhost,dc=mydomain
bind_pw = adminpassword
version = 3
dovecot.conf:
`protocols = imap imaps pop3s mail_location = maildir:/var/mail/%n mail_uid = 1000 mail_gid = 8
protocol lda {
postmaster_address = postmaster
auth_socket_path = /var/run/dovecot/auth-master
} protocol imap {
imap_client_workarounds = outlook-idle
} protocol pop3 {
pop3_uidl_format = %08Xu%08Xv
}
auth default {
mechanisms = plain
passdb ldap {
args = /etc/dovecot/dovecot-ldap.conf
}
userdb ldap {
args = /etc/dovecot/dovecot-ldap.conf
}
socket listen {
master {
path = /var/run/dovecot/auth-master
mode = 0600
user = vmail
group = mail
}
}
}`
dovecot-ldap.conf:
hosts = localhost
dn = cn=admin,dc=myhost,dc=mydomain
dnpass = adminpassword
auth_bind = yes
ldap_version = 3
base = dc=myhost,dc=mydomain
scope = subtree
user_filter = (&(objectClass=inetOrgPerson)(uid=%u))
pass_attrs = uid=user,userPassword=password
pass_filter = (&(objectClass=inetOrgPerson)(uid=%u))
default_pass_scheme = CRYPT
# Pourquoi pas du SQL ?
Posté par Fabien . Évalué à 1.
J'avais la même conf quand j'étais sous lenny.
Le passage à squeeze m'en a dégouté (la conf de slapd).
Si tu n'utilises ldap que pour le stockage des comptes mail, pourquoi ne pas passer à une base de données (mysql ou postgresql).
Je te paste le lien qui m'a permis de passer très rapidement de ldap à pgsql : http://wiki1.dovecot.org/HowTo/DovecotPostgresql
[^] # Re: Pourquoi pas du SQL ?
Posté par Graveen . Évalué à 1.
Salut Fabien, merci de ta réponse.
In fine, j'aurais pu choisir un backend MySQL ou PostGreSQL, mais ce qui a conditionné mon choix:
Bref, avec un backend sql, j'aurais au mieux du faire une passerelle AD <-> MySQL. Ca m'a semblé plus pérenne de passer par ldap.
Le truc c'est que je n'avais jamais bossé avec ldap ni sasl, et encore moins adapté dovecot/postfix pour s'appuyer dessus. Ca a pas mal augmenté le temps de mise en oeuvre, mais j'avais assez envie de travailler avec tout ça :)
# ah, ben...
Posté par Graveen . Évalué à 2.
bon, c'est con j'y ai passé 3 jours entre comprendre postfix, ldap et dovecot et tenter la maquette.
Donc dovecot n'authentifie que user1, et postfix balance au départ un user1 puis lors du delivery un user1@myhost.mydomain.
J'ai donc rajouté dans dovecot-ldap.conf:
user_filter = (|(mail=%u)(uid=%u))
à affiner bien sûr (je suis sur Dovecot pour la gestion des mbox au lieu des maildirs) mais là j'ai la brique webmail - LDA qui fonctionne.
Allez, un schema LDAP pour le maildrop et les maildomains, un peu de amavis, clamav, postgrey et je peux sérieusement envisager de migrer mon ancien MX :)
Des commentaires sur ma bidouille, ou sur le serveur en général au regard de la conf ci-dessus ?
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.