[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Postfix comportement étrange



Le 23/05/2015 18:47, Daniel Caillibaud a écrit :
Le 23/05/15 à 14:03, Samuel <debian-user-french-2010@ingescom.com> a écrit :
S> Je ne vois pas comment utiliser "username_field" pour récupérer et
S> l'alias et le user dans 2 tables différentes.
S>
S> Si j'ai bien compris que c'est à ce niveau qu'il faut intervenir.

Probable, je connais pas ta structure de table, tu dois écrire une requete sql qui sorte login
ou alias dans un seul champ, et tu utilise cette requete dans postfix, sans toucher aux
requetes déjà écrites pour dovecot.

On est bien d'accord, c'est dans postfix qu'il faut agir ... intervenir dans dovecot complique la chose.

Si t'es pas à l'aise avec des if dans le select, tu peux indiquer 2 requetes dans ta conf
postfix

cle = mysql:/path/to/recup_users.cf, mysql:/path/to/recup_alias.cf

et tu regarde la doc pour la syntaxe de ces fichier cf, c'est du genre

user = xxx
password = xxx
hosts = xxx
dbname = xxx
query = SELECT champ FROM table WHERE autreChamp = '%s'

Le %s dépend de cle (ça peut être une adresse, un domaine, suivant le contexte), ce que tu
doit remonter dépend aussi du contexte.

C'est ce que j'ai utilisé : accéder directement au contenu de la table quota via pré-sélection dans table users et forwards :

smtpd_recipient_restrictions = check_recipient_access mysql:check_quota
...
check_quota_query = select if(bytes>'12582912', '552 5.2.2 Quota exceeded (mailbox for user is full)', 'PERMIT') from quota where email = '%u@%d' or email=(select destination from forwards where source='%u@%d')

Et c'est vrai que cette rustine fonctionne bien ... mais sur une Jessie, dans le fichier /etc/dovecot/conf.d/90-quota.conf, il est mentionné cette page qui concerne l'utilisation du "service quota-status" pour postfix : https://sys4.de/de/blog/2013/04/08/postfix-dovecot-mailbox-quota/

Cette page donne cette commande pour interroger ce service (port 12340) depuis postfix :

smtpd_recipient_restrictions = check_policy_service inet:127.0.0.1:12340

Mon problème est que cette commande envoie en variable l'alias en valeur finale (qui n'existe pas dans la table quota de postfix -> unknown user) et non pas le user final (après mapping de l'alias).

Ma question était donc de savoir comment interroger un service via cette commande de postfix en choississant sa variable à envoyer. Je n'arrive pas à lier le "check_policy_service inet" à une requête SQL, ni même comment passer une variable en valeur.

La rustine employée fonctionne bien, mais je me demandais comment faire fonctionner la méthode telle que conseillée dans les fichiers de conf sur Jessie ...

Merci.

Samuel.





Reply to: