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 19/02/2014, à 12:02

hadri3n

Postfix envoi simple de mail depuis un autre Serveur

Bonjour,

J'ai configuré Postfix sur mon Serveur Mail et tout fonctionne très bien. (J'ai un VPS à part qui s'occupe uniquement des Mails, et un dédié qui s'occupe d'héberger mon site)

Sur mon dédié qui héberge le site, j'utilise le CMS Prestashop qui propose une fonction "envoyez vos mails depuis votre serveur SMTP", donc je configure dans le Back-office de Prestashop avec mes identifiants sur mon site de test en Local (MAMP), et tout fonctionne parfaitement, donc en local via mon ordi le mail de test s'envoi.

Par contre dès lors que je souhaite envoyer de la même manière un mail via mon serveur dédié, j'ai une erreur : The SMTP connection failed to start [smtp.exemple.fr:1234]: fsockopen returned Error Number 13 and Error String 'Permission denied'

Pourtant dans mynetworks, j'ai bien renseigné l'IP de mon serveur. Pensez-vous qu'il y a autre chose que le paramètre "mynetworks" pour autoriser l'envoi de mail depuis un autre serveur dédié ?

Mon postconf -n :

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
body_checks = pcre:/etc/postfix/body_checks
bounce_queue_lifetime = 1d
config_directory = /etc/postfix
delay_warning_time = 2h
header_checks = pcre:/etc/postfix/header_checks
home_mailbox = Maildir/
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
maximal_queue_lifetime = 1d
message_size_limit = 40960000
minimal_backoff_time = 180
mydestination = mail.exemple.fr, localhost.exemple.fr, exemple.fr, localhost
myhostname = mail.exemple.fr
mynetworks = 127.0.0.0/8, IP_SERVEUR_MAIL, IP_SERVEUR_DEDIE, IP_PRIVE_SERVEUR_DEDIE
myorigin = /etc/mailname
queue_run_delay = 180
readme_directory = no
recipient_delimiter = +
relayhost = 
smtp_tls_loglevel = 1
smtp_tls_security_level = may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_use_tls = yes
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
smtpd_client_connection_count_limit = 5
smtpd_client_connection_rate_limit = 5
smtpd_client_restrictions = cidr:/etc/postfix/client.cidr
smtpd_data_restrictions = reject_unauth_pipelining
smtpd_error_sleep_time = 5s
smtpd_hard_error_limit = 3
smtpd_helo_required = yes
smtpd_recipient_restrictions = permit_mynetworks,   permit_sasl_authenticated,   check_sender_access hash:/etc/postfix/relay_access,   check_recipient_access hash:/etc/postfix/white_addresses,   reject_invalid_helo_hostname,   reject_non_fqdn_helo_hostname,   reject_unauth_destination,   reject_unauth_pipelining,   reject_unlisted_recipient,   reject_rbl_client cbl.abuseat.org   reject_rbl_client zen.spamhaus.org   check_policy_service inet:127.0.0.1:60000
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/sender_access,   reject_non_fqdn_sender,   reject_unknown_sender_domain
smtpd_soft_error_limit = 1
smtpd_tls_CAfile = /etc/postfix/tls/cacert.pem
smtpd_tls_cert_file = /etc/postfix/tls/smtpd.crt
smtpd_tls_key_file = /etc/postfix/tls/smtpd.key
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_tls_session_cache_timeout = 3600s
smtpd_use_tls = yes
strict_rfc821_envelopes = yes
tls_random_source = dev:/dev/urandom
unknown_address_reject_code = 550
unknown_client_reject_code = 550
virtual_alias_domains = virtual1.com, virtual2.com
virtual_alias_maps = hash:/etc/postfix/virtual

Pour résumer mon problème : Envoi d'un mail via le serveur Local MAMP installé sur ma machine => SUCCESS, Envoi d'un mail via mon Serveur Dédié => ERROR

Dernières précisions :
- La config est basiquement la même sur les deux serv. J'ai imaginé que peut être mon dédié refuse de transmettre un signal SMTP via le port 1234 ?
- Lors de la tentative d'envoi sous Prestashop, mon mail.log ne reçoit strictement rien

Dernière modification par hadri3n (Le 19/02/2014, à 12:27)

Hors ligne

#2 Le 19/02/2014, à 13:53

axel55

Re : Postfix envoi simple de mail depuis un autre Serveur

Bonjour,

Par défaut Postfix n'est pas capable d'envoyer des courriels à partir d'un client à distance en smtp, il faut rajouter "un serveur sasl". Personnellement j’utilise Dovecot mais il doit exister des alternatives.

http://www.isalo.org/wiki.debian-fr/Con … ..._Passwd...

Cordialement.

Hors ligne

#3 Le 19/02/2014, à 19:17

Pseudo supprimé

Re : Postfix envoi simple de mail depuis un autre Serveur

fsockopen returned Error Number 13 and Error String 'Permission denied'

J'aimerais bien savoir dans quelles circonstances, tu fais tes tests. Quel client de messagerie te renvoie l'erreur de ci-dessus ?
Cela ressemble à une erreur de commande php ou autre, causée par une enveloppe non routable ou indéfinie. En clair, toto@domain.tld doit exister, BAL valide, potentiellement identifiable, session smtp valide.

enveloppe non routable (-f$sender manquant)

a/
if(@mail($recipient, $subject, $message, $reply . $type, "-f$sender"))
  die(chr(79) . chr(75) . md5(1234567890) . "+0");
[...]
$true_sender_smtp = '-f toto@domain.tld';
mail($to, $subject, $message, $headers, $true_sender_smtp);
[...]

b/
if(!in_array('fsockopen', $config))
  $socket = @fsockopen($address, 25, $errno, $errstr, 20);
elseif(!in_array('pfsockopen', $config))
  $socket = @pfsockopen($address, 25, $errno, $errstr, 20);
[...]

Type d'erreur renvoyée

a/PHP Warning:  mail(/var/log/apache2/default-error.log): failed to open stream: Permission denied in /www/http/test2-mail.php on line 23
b/...fsockopen returned Error Number 13 and Error String 'Permission denied'  ?

#4 Le 20/02/2014, à 14:17

hadri3n

Re : Postfix envoi simple de mail depuis un autre Serveur

Titouan a écrit :

fsockopen returned Error Number 13 and Error String 'Permission denied'

J'aimerais bien savoir dans quelles circonstances, tu fais tes tests. Quel client de messagerie te renvoie l'erreur de ci-dessus ?
Cela ressemble à une erreur de commande php ou autre, causée par une enveloppe non routable ou indéfinie. En clair, toto@domain.tld doit exister, BAL valide, potentiellement identifiable, session smtp valide.

enveloppe non routable (-f$sender manquant)

a/
if(@mail($recipient, $subject, $message, $reply . $type, "-f$sender"))
  die(chr(79) . chr(75) . md5(1234567890) . "+0");
[...]
$true_sender_smtp = '-f toto@domain.tld';
mail($to, $subject, $message, $headers, $true_sender_smtp);
[...]

b/
if(!in_array('fsockopen', $config))
  $socket = @fsockopen($address, 25, $errno, $errstr, 20);
elseif(!in_array('pfsockopen', $config))
  $socket = @pfsockopen($address, 25, $errno, $errstr, 20);
[...]

Type d'erreur renvoyée

a/PHP Warning:  mail(/var/log/apache2/default-error.log): failed to open stream: Permission denied in /www/http/test2-mail.php on line 23
b/...fsockopen returned Error Number 13 and Error String 'Permission denied'  ?

Hello merci pour ta réponse,

En fait cette erreur provient du Back-office de Prestashop (un CMS d'e-commerce) qui permet, lors de la saisie d'identifiants SMTP, d'envoyer tes mails directement via le site, donc Prestashop est le client mail, en php (je veux donc que mon serveur mail serve de passerelle).

L'erreur intervient lors du clic sur "Envoyer un mail de test". Je précise que j'ai effectué exactement le même test sur un serveur local  installé sur mon ordi (via MAMP, la version Mac de WAMP/LAMP), et l'email s'envoie parfaitement..

Donc je me demande ce qui cloche, sachant :

- qu'en testant via un serveur MAMP local (donc de mon ordi perso) => OK, je reçois le mail de test,
- et lors de l'essai sur mon Serveur dédié => FAIL, message d'erreur ci-dessus


--> Ça a l'air d'être clairement PHP ou la config du serveur Apache qui est en cause donc peut être qu'il y a quelque chose à installer ou à activer sur mon Serveur Dédié ?




PS axel55 : j'ai déjà installé tout ce qu'il faut pour SASL et le courrier sortant, je peux déjà tout à fait envoyer des mails via SMTP, ce n'est pas ça le problème. Merci quand même wink

Dernière modification par hadri3n (Le 20/02/2014, à 14:33)

Hors ligne

#5 Le 21/02/2014, à 09:17

Pseudo supprimé

Re : Postfix envoi simple de mail depuis un autre Serveur

1/Fais un test telnet smtp

2/Fais un test aussi avec mail() de prestashop

2a/renseigner au besoin le /etc/php5/apache2/php.ini

sendmail_from => no value => no value
# sendmail_from = webmaster@domain.tld # eq sendmail -f
sendmail_path = /usr/sbin/sendmail -t -i 
# ou /usr/sbin/sendmail -t -i -f webmaster@domain.tld
SMTP = mail.domain.tld
smtp_port = 1234
;auth_username = 
;auth_password = 

3/regarde les logs de postfix ou les erreurs de session smtp rapportées au postmaster
main.cf

notify_classes = bounce, 2bounce, delay, policy, protocol, resource, software

4/pour recevoir, il faut le MX dns défini

5/Si Il y a un problème d'enveloppe, dans tes logs, postfix renvoie

Emetteur invalide. Invalid Sender. OFR404_405 [405] (in reply to MAIL FROM command)

alors que le php renvoie

failed to open stream...ou fsockopen.. Permission denied

#6 Le 21/02/2014, à 11:53

hadri3n

Re : Postfix envoi simple de mail depuis un autre Serveur

Titouan a écrit :

1/Fais un test telnet smtp

2/Fais un test aussi avec mail() de prestashop

2a/renseigner au besoin le /etc/php5/apache2/php.ini

sendmail_from => no value => no value
# sendmail_from = webmaster@domain.tld # eq sendmail -f
sendmail_path = /usr/sbin/sendmail -t -i 
# ou /usr/sbin/sendmail -t -i -f webmaster@domain.tld
SMTP = mail.domain.tld
smtp_port = 1234
;auth_username = 
;auth_password = 

3/regarde les logs de postfix ou les erreurs de session smtp rapportées au postmaster
main.cf

notify_classes = bounce, 2bounce, delay, policy, protocol, resource, software

4/pour recevoir, il faut le MX dns défini

5/Si Il y a un problème d'enveloppe, dans tes logs, postfix renvoie

Emetteur invalide. Invalid Sender. OFR404_405 [405] (in reply to MAIL FROM command)

alors que le php renvoie

failed to open stream...ou fsockopen.. Permission denied

Hello merci pour ta réponse,

Alors,

1) Telnet renvoi OK

2) en fait je n'ai pas activé la fonction mail() de PHP… sachant que je souhaitais utiliser via SMTP… Il faut que la fonction mail() soit installée ? Si c'est le cas, gros fail de ma part ! Je vais l'activée quand même de suite.
Comme PHP mail() est non actif, via Prestashop mail() on me renvoi l'erreur : Sending failed using mail() as PHP's default mail() function returned boolean FALSE. --> (logique car mail() n'est pas actif sur mon serveur)

3) Pas d'erreurs, mon log ne reçoit rien, tandis que lorsque j'envoie de mon MAMP local (sur mon ordi), le log retourne l'envoi de mail en success. Donc le serveur ne reçoit rien quand j'essaye de tester via mon Serveur Dédié.

4) Le MX DNS est bien défini.

Edit: DU NOUVEAU : J'ai configuré Postfix sur mon dédié et ma fonction mail() de Prestashop me donne un success : "Message envoyé !"
Par contre je ne reçois rien sur la BAL en question…



--> SERVEUR DEDIE : Voici mon mail.log lors de l'envoi via mail() :

Feb 21 16:17:53 r6-s27034 postfix/qmgr[3016]: 8DB9A4253B: from=<root@HOTE_SERV.localdomain>, size=450, nrcpt=1 (queue active)
Feb 21 16:17:53 r6-s27034 postfix/qmgr[3016]: 11B9242586: from=<contact@exemple.fr>, size=564, nrcpt=1 (queue active)
Feb 21 16:18:00 r6-s27034 postfix/pickup[3014]: 7139B42590: uid=48 from=<contact@exemple.fr>
Feb 21 16:18:00 r6-s27034 postfix/cleanup[3023]: 7139B42590: message-id=<20140221151800.1934.2018929834.swift@IP_DU_SERVEUR_DEDIE>
Feb 21 16:18:00 r6-s27034 postfix/qmgr[3016]: 7139B42590: from=<contact@exemple.fr>, size=565, nrcpt=1 (queue active)

--> SERVEUR MAIL : Voici mon mail.log lors de la réception :

Feb 21 16:18:37 mail postfix/anvil[10919]: statistics: max connection rate 2/60s for (smtp:unknown) at Feb 21 16:15:17
Feb 21 16:18:37 mail postfix/anvil[10919]: statistics: max connection count 1 for (smtp:unknown) at Feb 21 16:15:06
Feb 21 16:18:37 mail postfix/anvil[10919]: statistics: max cache size 1 at Feb 21 16:15:06
Feb 21 16:20:06 mail postfix/smtpd[10922]: connect from unknown[unknown]
Feb 21 16:20:06 mail postfix/smtpd[10922]: lost connection after CONNECT from unknown[unknown]
Feb 21 16:20:06 mail postfix/smtpd[10922]: disconnect from unknown[unknown]

Des idées ?

Dernière modification par hadri3n (Le 21/02/2014, à 16:28)

Hors ligne

#7 Le 21/02/2014, à 16:46

hadri3n

Re : Postfix envoi simple de mail depuis un autre Serveur

J'avance un peu, lorsque je tente d'envoyer un mail, parfois mon maillog (côté Serveur Dédié) me donne le status :

Soit :

status=sent (delivered to mailbox)

Soit :

status=deferred (delivery temporarily suspended: connect to smtp.exemple.fr[00.000.00.000]:1234: Connection timed out)

Voici un telnet de mon dédié sur mon serveurr mail :

telnet smtp.exemple.fr 1234
Trying 19.000.33.122...
telnet: connect to address 19.000.33.122: Connection timed out

Tandis qu'un telnet via mon ordi perso :

telnet smtp.exemple.fr 1234
Trying 19.000.33.122...
Connected to smtp.exemple.fr.
Escape character is '^]'.
220 mail.exemple.fr ESMTP Postfix (Debian/GNU)

J'ai l'impression que mon Serveur Mail refuse l'accès de mon Serveur Dédié ?

Dernière modification par hadri3n (Le 21/02/2014, à 16:48)

Hors ligne

#8 Le 21/02/2014, à 16:52

Pseudo supprimé

Re : Postfix envoi simple de mail depuis un autre Serveur

deferred parce que ce n'est pas le bon transport. Je croyais que tu voulais utiliser directement le MTA du VPS, mais en fait pas du tout ! Tu veux l'utiliser indirectement par l'autre MTA du dédié....

à tester,
Postfix dédié

sudo postconf -e 'relay_domains=$mydestination exemple.fr'
sudo postconf -e 'transport_maps=hash:/etc/postfix/transport'
sudo postconf -e 'mynetworks=127.0.0.0/8 192.168.1.0/24'

Postfix dédié
sudo nano /etc/postfix/transport

exemple.fr         :[IP.SERVEUR.MAIL.VPS]

sudo postmap  /etc/postfix/transport

et déclarer 2 MX dans les DNS de exemple.fr

MX 10 mail.vps.exemple.fr,  MX 20 mail.dedie.exemple.fr

Ensuite dans le php.ini du dédié.

SMTP=localhost
...

#9 Le 21/02/2014, à 17:18

hadri3n

Re : Postfix envoi simple de mail depuis un autre Serveur

Titouan a écrit :

deferred parce que ce n'est pas le bon transport. Je croyais que tu voulais utiliser directement le MTA du VPS, mais en fait pas du tout ! Tu veux l'utiliser indirectement par l'autre MTA du dédié....

à tester,
Postfix dédié

sudo postconf -e 'relay_domains=$mydestination exemple.fr'
sudo postconf -e 'transport_maps=hash:/etc/postfix/transport'
sudo postconf -e 'mynetworks=127.0.0.0/8 192.168.1.0/24'

Postfix dédié
sudo nano /etc/postfix/transport

exemple.fr         :[IP.SERVEUR.MAIL.VPS]

sudo postmap  /etc/postfix/transport

et déclarer 2 MX dans les DNS de exemple.fr

MX 10 mail.vps.exemple.fr,  MX 20 mail.dedie.exemple.fr

Ensuite dans le php.ini du dédié.

SMTP=localhost
...

Super, merci pour cette réponse !
Par contre pour le MTA du VPS je souhaite qu'il soit utilisé pour les échanges des mails, c'est ce serveur qui va s'occuper du traitement des mails…

--> Donc j'avais mis dans mon main.cf : relayhost = smtp.exemple.fr:1234


VPS = tous les mails sont gérés et stockés sur ce serveur

Dédié = Héberge mon site, et certains mails sont envoyés par ce serveur en utilisant le SMTP du VPS (donc le VPS reste la passerelle pour tous les mails)

C'est bien ça que tu as compris, ou l'inverse ?

Merci beaucoup,
Hadrien

Dernière modification par hadri3n (Le 21/02/2014, à 17:21)

Hors ligne

#10 Le 21/02/2014, à 17:41

Pseudo supprimé

Re : Postfix envoi simple de mail depuis un autre Serveur

relayhost = smtp.exemple.fr:1234

euh non, à supprimer

#11 Le 21/02/2014, à 18:34

hadri3n

Re : Postfix envoi simple de mail depuis un autre Serveur

Titouan a écrit :

relayhost = smtp.exemple.fr:1234

euh non, à supprimer

Ok c'est fait, merci.

Peux-tu me dire ce que je dois supprimer/ou ajouter dans mon Postconf ? (-> C'est celui du Serveur dédié)

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
html_directory = no
inet_interfaces = localhost
inet_protocols = ipv4
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
mydestination = $myhostname, exemple.fr, localhost.localdomain, localhost
mydomain = exemple.fr
myhostname = exemple.fr
mynetworks = 127.0.0.0/8 192.168.1.0/24
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES
recipient_delimiter = +
relay_domains = exemple.fr
sample_directory = /usr/share/doc/postfix-2.6.6/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_client
smtp_sasl_security_options = noanonymous
smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)
transport_maps = hash:/etc/postfix/transport
unknown_local_recipient_reject_code = 550

Dernière modification par hadri3n (Le 21/02/2014, à 18:35)

Hors ligne