Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 17/07/2009, à 15:35

emlesna

postfix

Bonjour,

j'ai recemment ajouté SASL/TLS sur un serveur Postfix/Amavisd/Spamassassin afin de pouvoir envoyer des mails de l'exterieur de façon sécurisé.

Désormais, il faut être authentifié pour envoyer des mail en dehors du domaine de postfix et le serveur reçoit sans probleme les mails à destination de son domaine.

Dans le but d'empêcher que quelqu'un usurpe l'identité d'une personne de mon domaine, j'ai appliqué à la variable smtp_recipient_restrictions du fichier /etc/postfix/main.cf la configuration suivante :

smtpd_recipient_restrictions =
        permit_mynetworks
        permit_sasl_authenticated
        reject_unauth_destination
        check_sender_access hash:/etc/postfix/not_our_domain_as_sender
        permit

le fichier not_our_domain_as_sender contient les domaines gérés par postfix soit :

mondomaine1.com     554 You are not in our domain
mondomaine2.com     554 You are not in our domain
mondomaine3.com     554 You are not in our domain

Ce qui répond parfaitement à cette contrainte, seulement un nouveau problème est survenu :

Un autre serveur, situé en dehors du domaine postfix, envoie des mails via des formulaire de sites internet
et la classe php_mailer.
Les domaines des destinataires correspondent aux domaines gérés par posfix
La classe php_mailer permet l'authentification SMTP, elle est d'ailleurs effective lors de chaque envoi.

Depuis l'ajout de check_sender_access, ces mails sont refusés par postfix
Voici les logs :

Jul 17 11:11:27 ks301752 postfix/smtpd[476]: connect from ns300885.ovh.net[91.121.67.7]
Jul 17 11:11:27 ks301752 postfix/smtpd[476]: NOQUEUE: reject: RCPT from ns300885.ovh.net[91.121.67.7]: 554 5.7.1 <contact@anjoumultimedia.com>: Sender address rejected: You are not in our domain; from=<contact@anjoumultimedia.com> to=<contact@anjoumultimedia.com> proto=ESMTP helo=<www.creation-site-internet-angers.com>
Jul 17 11:11:27 ks301752 postfix/smtpd[476]: lost connection after RSET from ns300885.ovh.net[91.121.67.7]
Jul 17 11:11:27 ks301752 postfix/smtpd[476]: disconnect from ns300885.ovh.net[91.121.67.7]

On peut constater que cette dernière règle est responsable de ce rejet : " Sender address rejected: You are not in our domain "

Pourtant, l'authentification SASL est activé et postfix ne devrait pas atteindre la règle check_sender_access
étant donné que son sens de verification lui obligera au préalable à verifier l'authentification SASL.

Voici ma configuration postfix : (postfix -n)

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
broken_sasl_auth_clients = yes
config_directory = /etc/postfix
content_filter = smtp-amavis:[127.0.0.1]:10024
inet_interfaces = all
mailbox_size_limit = 0
mydestination = localhost.kimsufi.com, , localhost
myhostname = ks301752.kimsufi.com
mynetworks = 
myorigin = /etc/mailname
readme_directory = no
receive_override_options = no_address_mappings
recipient_delimiter = +
relayhost = 
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_recipient_restrictions = permit_mynetworks	permit_sasl_authenticated	reject_unauth_destination	check_sender_access hash:/etc/postfix/not_our_domain_as_sender        permit
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = private/auth
smtpd_sasl_type = dovecot
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/ssl/certs/postfix.pem
smtpd_tls_key_file = /etc/ssl/private/postfix.pem
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf,mysql:/etc/postfix/mysql-email2email.cf
virtual_gid_maps = static:5000
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_transport = dovecot
virtual_uid_maps = static:5000

Je ne comprends pas pourquoi ces mails sont refusés ?

Si vous avez des pistes, merci....


Indicateur de position dans les moteurs de recherche :
http://rankmonitor.webou.net

Hors ligne

#2 Le 17/07/2009, à 21:07

Uggy

Re : postfix

emlesna a écrit :

Pourtant, l'authentification SASL est activé et postfix ne devrait pas atteindre la règle check_sender_access
étant donné que son sens de verification lui obligera au préalable à verifier l'authentification SASL.

Tout a fait d'accord...


emlesna a écrit :

La classe php_mailer permet l'authentification SMTP, elle est d'ailleurs effective lors de chaque envoi.

Comment tu sais quelle est effective ?



Une connexion SASL appararait comme ceci chez moi

Jul 17 20:59:46 aaa postfix/smtpd[15730]: connect from xxxxx[YYYYYY]
Jul 17 20:59:46 aaa postfix/smtpd[15730]: setting up TLS connection from xxxx[YYY]
Jul 17 20:59:46 aaa postfix/smtpd[15730]: Anonymous TLS connection established from xxxxx[YYYY] TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)
Jul 17 20:59:46 aaaa postfix/smtpd[15730]: DD8E7110CBA: client=xxxxxx[YYYYY], sasl_method=CRAM-MD5, sasl_username=aaaa@bbbb.org
Jul 17 20:59:46 aaa postfix/cleanup[15734]: DD8E7110CBA: message-id=<4A60CA22 etc....

Mais ton ton log je ne vois pas trace de sasl_method et de sasl_username=

Hors ligne

#3 Le 20/07/2009, à 09:32

emlesna

Re : postfix

Merci !

C'est exact, aucune trace dans les log d'une authentification SMTP
Pourtant j'ai bien déclaré les attributs de la classe pphMailer, de sorte d'activer l'authentification SMTP, soit de la forme :

<?php
 
require("class.phpmailer.php");
 
 
$mail = new PHPMailer();
$mail->IsSMTP(); // telling the class to use SMTP
$mail->SMTPAuth = true;     // turn on SMTP authentication 
$mail->Host = "smtp.yahoo.fr"; // SMTP server
$mail->Username = "user_name";
$mail->Password = "pass";
 
$mail->From = "sent_from@yahoo.fr";
//$mail->FromName = "SwordShadow"; 
$mail->AddAddress(send_to@yahoo.fr);
 
$mail->Subject = "sujet";
$mail->Body = "corps du mail";
$mail->WordWrap = 50;
 
 
if(!$mail->Send())
{
   echo 'Message was not sent.';
   echo 'Mailer error: ' . $mail->ErrorInfo;
}
else
{
   echo 'Message has been sent.';
}
 
?>

Je ne vois pas ce qui pourrait empêcher l'authentification !


Indicateur de position dans les moteurs de recherche :
http://rankmonitor.webou.net

Hors ligne

#4 Le 22/07/2009, à 10:17

emlesna

Re : postfix

Salut!

Problème résolu, ma version de phpMailer était obsolète et ne permettait pas l'authentification smtp !
Désormais, suite à une mise à jour, c'est opérationnel !

Merci Uggy !

Mais je me pose la question suivante :
Au lieu d'activer l'authentification SASL sur mon serveur  afin que les mails soient relayer par postfix,
n'aurais-je pas pu autoriser le domaine "ns300885.ovh.net" (voir logs) tout simplement ?

Merci


Indicateur de position dans les moteurs de recherche :
http://rankmonitor.webou.net

Hors ligne

#5 Le 22/07/2009, à 11:57

Uggy

Re : postfix

emlesna a écrit :

n'aurais-je pas pu autoriser le domaine "ns300885.ovh.net" (voir logs) tout simplement ?

Qu'eest ce que tu entends par "domaine"?
Si tu veux parler d'authoriser l'IP de la machine..alors oui .. a condition bien sur que tu soit l'unique administrateur de la mahine en question..

Mais tu pourrais surtout potentiellement faire en sorte que ns300885.ovh.net envoi ses mails elle meme (par un Postfix local par exemple) aux destinataires sans passer par un relais..

Hors ligne

#6 Le 22/07/2009, à 12:24

emlesna

Re : postfix

ok, le domaine ou aurais-du-je dire, la machine, soit l'ip 91.121.67.7 et correspondant au domaine ns300885.ovh.net.

Je suis l'unique administrateur.
Comment procéder pour indiquer à postfix d'autoriser de relayer les mails en provenance de cette IP ?
Précise t-on cette exception dans smtp_recipient_restrictions ou bien dans smtpd_sender_restrictions ?

Uggy a écrit :

Mais tu pourrais surtout potentiellement faire en sorte que ns300885.ovh.net envoi ses mails elle meme (par un Postfix local par exemple) aux destinataires sans passer par un relais..

En fait, postfix est le serveur mail (mx) des domaines déclarés sur le serveur ns300885.ovh.net.
À la base ma mission est de séparer le service mail du service web (sites internet hébergés sur le serveur ns300885.ovh.net)....

merci...


Indicateur de position dans les moteurs de recherche :
http://rankmonitor.webou.net

Hors ligne

#7 Le 22/07/2009, à 12:42

Uggy

Re : postfix

emlesna a écrit :

Comment procéder pour indiquer à postfix d'autoriser de relayer les mails en provenance de cette IP ?

http://www.postfix.org/postconf.5.html#mynetworks

Hors ligne

#8 Le 22/07/2009, à 14:13

emlesna

Re : postfix

merci

parmi les resultats affichés de la commande postconf -d j'ai la ligne  :

mynetworks = 127.0.0.0/8 94.23.54.0/24

donc si j'ai bien compris, je dois ajouté l'ip du serveur ns300885.ovh.net à la suite ?

Mais pourquoi à t-on 0/8 et 0/24 à la fin des adresses ?


Indicateur de position dans les moteurs de recherche :
http://rankmonitor.webou.net

Hors ligne

#9 Le 22/07/2009, à 15:00

Uggy

Re : postfix

La valeur par defaut (-d) est d'autoriser tout le reseau dans lequel est l'IP de la machine.
Vu qu'il affiche 94.23.54.0/24, c'est que ton serveur a surement une IP 94.23.54.? avec un masque 255.255.255.0

Comme tu ne veux pas autoriser tous les serveur OVH. n'ajoute pas l'IP de ns300885.ovh.net a la suite des valeurs retournée... mais a la place.
Ta ligne  mynetworks ne doit contenir que la/les IPs que tu souhaites autoriser (donc que des machines sur lesquelles tu as pleins pouvoirs et pleine confiance) dans ton cas, une seule machine.

Hors ligne