Partage
  • Partager sur Facebook
  • Partager sur Twitter

Configurer fonction mail php sous Linux

Sujet résolu
    3 mai 2009 à 1:30:08

    Bonjour,

    J'ai récemment migrer mon serveur sous Linux et j'ai un petit soucis au niveau de la fonction mail de PHP,
    en effet elle ne fonctionne pas...
    J'ai installer postfix mais je ne sais pas si je l'ai bien configuré et donc ça ne fonctionne toujours pas
    En revanche, ma fonction mail() renvoie bien TRUE quand on envoi un mail mais je ne reçoit jamais ce mail...
    Quelqu'un pourrai m'expliquer comment la faire fonctionner?
    Merci
    • Partager sur Facebook
    • Partager sur Twitter
      3 mai 2009 à 22:54:36

      comment faire pour que je puisse envoyer un mail depuis une adresse mail existante vers une autre adresse sans serveur smtp a moi.
      afin que la fonction mail de PHP fonctionne?
      • Partager sur Facebook
      • Partager sur Twitter
        3 mai 2009 à 23:11:28

        vas voir dans ton php.ini et vérifie la ligne sendmail_path. Elle doit valoir :

        sendmail_path =/usr/sbin/sendmail -t -i

        envoie un mail via php

        puis vas regarder les logs postfix avec un

        tail /var/log/mail.log

        Et vois ce qu'il dit
        • Partager sur Facebook
        • Partager sur Twitter
          3 mai 2009 à 23:26:53

          j'ai :
          May 3 23:43:43 ubuntu-serveur postfix/master[20376]: fatal: open lock file /var/lib/postfix/master.lock: cannot open file: Permission denied

          May 3 23:44:34 ubuntu-serveur postfix/postdrop[20383]: warning: unable to look up public/pickup: No such file or directory


          ce qui veut dire?
          • Partager sur Facebook
          • Partager sur Twitter
            3 mai 2009 à 23:51:57

            Ca veut dire que postfix n'est pas très bien configuré et que certains composants dans /var/spool/postfix/public ne sont pas présents (notamment pickup)

            je te conseille de reconfigurer postfix avec un bon

            sudo dpkg-reconfigure postfix

            (bien sur si debian / ubuntu...)

            si ça ne marche pas :

            apt-get remove --purge postfix
            apt-get install postfix

            surtout il est important que la configuration de base de postfix corresponde bien à tes attentes.
            • Partager sur Facebook
            • Partager sur Twitter
              4 mai 2009 à 0:04:40

              Résultat du postconf -n:
              alias_database = hash:/etc/aliases
              alias_maps = hash:/etc/aliases
              append_dot_mydomain = no
              biff = no
              config_directory = /etc/postfix
              inet_interfaces = all
              mailbox_size_limit = 0
              mydestination = gmail.com, ubuntu-serveur, localhost.localdomain, localhost
              myhostname = ubuntu-serveur
              mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
              myorigin = /etc/mailname
              readme_directory = no
              recipient_delimiter = +
              relayhost = smtp.orange.fr
              smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
              smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
              smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
              smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
              smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
              smtpd_use_tls = yes



              Je veux juste un relais smtp, c'est à dire pouvoir envoyer un mail avec une adresse via php, sans créer de serveur smtp...(sur mon serveur)
              • Partager sur Facebook
              • Partager sur Twitter
                4 mai 2009 à 0:11:35

                ça m'a pas l'air trop mal. Par contre, je ne vois pas pouquoi gmail.com se trouve dans mydestination

                Je te conseille de réinstaller postfix apres un --purge. L'installation actuelle semble mal en point.
                • Partager sur Facebook
                • Partager sur Twitter
                  4 mai 2009 à 0:24:04

                  La conf ci-dessus est après un --purge et le gmail.com c'est parce que mon adresse que j'utilise est une gmail

                  Citation : Console


                  Le « nom de courrier » est le nom employé pour qualifier toutes les
                  adresses n'ayant pas de nom de domaine. Cela inclut les courriels de et
                  vers l'adresse du superutilisateur (root). Il est donc conseillé de
                  veiller à éviter d'envoyer des courriels en tant que
                  « root@example.org ».

                  D'autres programmes se servent de ce nom ; il doit correspondre au
                  domaine unique et complètement qualifié (FQDN) d'où le courrier semblera
                  provenir.

                  Ainsi, si une adresse provenant de l'hôte local est foo@example.org, la
                  valeur correcte pour cette option serait example.org.



                  donc j'ai mis gmail.com... je savais pas trop quoi mettre à cette question...


                  Problème de droit après correction j'ai dans mail.log:
                  May  4 00:32:54 ubuntu-serveur postfix/pickup[22671]: 506AEDFAD0: uid=33 from=<www-data>
                  May  4 00:32:54 ubuntu-serveur postfix/cleanup[22683]: 506AEDFAD0: message-id=<20090503223254.506AEDFAD0@ubuntu-serveur>
                  May  4 00:32:54 ubuntu-serveur postfix/qmgr[22672]: 506AEDFAD0: from=<www-data@ubuntu-serveur>, size=411, nrcpt=1 (queue active)


                  Pourquoi il essaye d'envoyer avec www-data@ubuntu-serveur? moi je veut avec mon adresse gmail...
                  • Partager sur Facebook
                  • Partager sur Twitter
                    4 mai 2009 à 0:37:28

                    tu dois mettre le nom du domaine de ton serveur (type mondomaine.tld) !

                    Pareil pour myhostname. Chez moi par exemple c'est mail.mondomaine.tld

                    Une fois que tu as bien réinstallé postfix from scratch et tout bien configuré,réessaye.

                    Voici une partie de mon main.cf
                    myorigin = /etc/mailname
                    smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
                    biff = no
                    append_dot_mydomain = yes
                    
                    # TLS parameters
                    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:${queue_directory}/smtpd_scache
                    smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache
                    smtpd_tls_auth_only = no
                    smtp_tls_security_level = may
                    
                    myhostname = mail.mondomaine.tld (peut être aussi www.mondomaine.tld -> le nom de domaine de ton site web)
                    mydomain = mondomaine.tld
                    alias_maps = hash:/etc/aliases
                    alias_database = hash:/etc/aliases
                    sender_canonical_maps = hash:/etc/postfix/sender-canonical
                    myorigin = /etc/mailname
                    relayhost = smtp.numericable.fr
                    mynetworks = 127.0.0.0/8, 192.168.1.0/24
                    mailbox_command = procmail -a "$EXTENSION"
                    mailbox_size_limit = 0
                    recipient_delimiter = +
                    mydestination = $mydomain, localhost


                    EDIT après ton edit :

                    il envoie sous le nom www-data@trucmuche parce que l'utilisateur apache est www-data.

                    Le nom de l'envoyeur si tu veux le modifier doit être passé à la commande sendmail via un header. L'adresse www-data@bidule sera transparente.

                    C'est une très bonne chose ce qui est marqué dans le log!
                    Le message est mis en file d'attente mais pas envoyé. Postfix doit normalement envoyer le mail via smtp vers l'adresse finale.
                    Peux tu faire un petit copier-coller du fichier master.cf?


                    • Partager sur Facebook
                    • Partager sur Twitter
                      4 mai 2009 à 0:44:35

                      Tu choisi quoi la?

                      Configuration type du serveur de messagerie :

                      Pas de configuration
                      Site Internet
                      Internet avec un « smarthost »
                      Système satellite
                      Local uniquement
                      • Partager sur Facebook
                      • Partager sur Twitter
                        4 mai 2009 à 0:45:22

                        choisis site Internet.
                        Ps:lis mon edit du dessus.

                        Ta config est presque bonne :)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          4 mai 2009 à 0:54:50

                          Ma nouvelle conf qui ne marche pas :
                          alias_database = hash:/etc/aliases
                          alias_maps = hash:/etc/aliases
                          append_dot_mydomain = yes
                          biff = no
                          config_directory = /etc/postfix
                          inet_interfaces = all
                          mailbox_size_limit = 0
                          mydestination = $mydomain, ubuntu-serveur, localhost.localdomain, localhost
                          myhostname = prozero.myftp.org
                          mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
                          myorigin = /etc/mailname
                          readme_directory = no
                          recipient_delimiter = +
                          relayhost = smtp.orange.fr
                          smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
                          smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
                          smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
                          smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
                          smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
                          smtpd_use_tls = yes

                          et dans mail.log:
                          May 4 00:52:58 ubuntu-serveur postfix/pickup[24485]: 44B34DFAD0: uid=33 from=<www-data>
                          May 4 00:52:58 ubuntu-serveur postfix/cleanup[24503]: 44B34DFAD0: message-id=<20090503225258.44B34DFAD0@prozero.myftp.org>
                          May 4 00:52:58 ubuntu-serveur postfix/qmgr[24484]: 44B34DFAD0: from=<www-data@prozero.myftp.org>, size=416, nrcpt=1 (queue active)
                          • Partager sur Facebook
                          • Partager sur Twitter
                            4 mai 2009 à 1:33:05

                            re : un aperçu de master.cf pour voir comment est configuré smtp?

                            Postfix marche : il prend en charge le mail et le passe à la queue (qmgr=queue manager). L'étape suivante est le passage du contenue de la queue à smtp. C'est là que ça bloque.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              4 mai 2009 à 9:45:30

                              Voilà le contenu de master.cf, je l'ai mis dans secret car il est un peu long...
                              #
                              # Postfix master process configuration file.  For details on the format
                              # of the file, see the master(5) manual page (command: "man 5 master").
                              #
                              # Do not forget to execute "postfix reload" after editing this file.
                              #
                              # ==========================================================================
                              # service type  private unpriv  chroot  wakeup  maxproc command + args
                              #               (yes)   (yes)   (yes)   (never) (100)
                              # ==========================================================================
                              smtp      inet  n       -       -       -       -       smtpd
                              #submission inet n       -       -       -       -       smtpd
                              #  -o smtpd_tls_security_level=encrypt
                              #  -o smtpd_sasl_auth_enable=yes
                              #  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
                              #  -o milter_macro_daemon_name=ORIGINATING
                              #smtps     inet  n       -       -       -       -       smtpd
                              #  -o smtpd_tls_wrappermode=yes
                              #  -o smtpd_sasl_auth_enable=yes
                              #  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
                              #  -o milter_macro_daemon_name=ORIGINATING
                              #628      inet  n       -       -       -       -       qmqpd
                              pickup    fifo  n       -       -       60      1       pickup
                              cleanup   unix  n       -       -       -       0       cleanup
                              qmgr      fifo  n       -       n       300     1       qmgr
                              #qmgr     fifo  n       -       -       300     1       oqmgr
                              tlsmgr    unix  -       -       -       1000?   1       tlsmgr
                              rewrite   unix  -       -       -       -       -       trivial-rewrite
                              bounce    unix  -       -       -       -       0       bounce
                              defer     unix  -       -       -       -       0       bounce
                              trace     unix  -       -       -       -       0       bounce
                              verify    unix  -       -       -       -       1       verify
                              flush     unix  n       -       -       1000?   0       flush
                              proxymap  unix  -       -       n       -       -       proxymap
                              proxywrite unix -       -       n       -       1       proxymap
                              smtp      unix  -       -       -       -       -       smtp
                              # When relaying mail as backup MX, disable fallback_relay to avoid MX loops
                              relay     unix  -       -       -       -       -       smtp
                                      -o smtp_fallback_relay=
                              #       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
                              showq     unix  n       -       -       -       -       showq
                              error     unix  -       -       -       -       -       error
                              retry     unix  -       -       -       -       -       error
                              discard   unix  -       -       -       -       -       discard
                              local     unix  -       n       n       -       -       local
                              virtual   unix  -       n       n       -       -       virtual
                              lmtp      unix  -       -       -       -       -       lmtp
                              anvil     unix  -       -       -       -       1       anvil
                              scache    unix  -       -       -       -       1       scache
                              #
                              # ====================================================================
                              # Interfaces to non-Postfix software. Be sure to examine the manual
                              # pages of the non-Postfix software to find out what options it wants.
                              #
                              # Many of the following services use the Postfix pipe(8) delivery
                              # agent.  See the pipe(8) man page for information about ${recipient}
                              # and other message envelope options.
                              # ====================================================================
                              #
                              # maildrop. See the Postfix MAILDROP_README file for details.
                              # Also specify in main.cf: maildrop_destination_recipient_limit=1
                              #
                              maildrop  unix  -       n       n       -       -       pipe
                                flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
                              #
                              # See the Postfix UUCP_README file for configuration details.
                              #
                              uucp      unix  -       n       n       -       -       pipe
                                flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
                              #
                              # Other external delivery methods.
                              #
                              ifmail    unix  -       n       n       -       -       pipe
                                flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
                              bsmtp     unix  -       n       n       -       -       pipe
                                flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
                              scalemail-backend unix  -       n       n       -       2       pipe
                                flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
                              mailman   unix  -       n       n       -       -       pipe
                                flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
                                ${nexthop} ${user}


                              Donc pour toi ce qui bloque c'est le relai SMTP?
                              • Partager sur Facebook
                              • Partager sur Twitter
                                4 mai 2009 à 10:34:09

                                Bonjour :)

                                Ca semble Ok
                                Les mails en local sont ils bien délivrés?
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  4 mai 2009 à 10:43:27

                                  Comment tu fait pour les envoyer en locale?
                                  sendmail ...
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    4 mai 2009 à 10:48:49

                                    un simple
                                    mail mon_user -s mon sujet


                                    tu tapes ensuite ton message et tu termines par une ligne avec un point (.) unique.

                                    Puis tu vas voir ton log postfix.

                                    Le but c'est de voir si ça vient de smtp en n'utilisant pas smtp pour l'envoi :p
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      4 mai 2009 à 10:53:35

                                      mail user -s coucou
                                      Le programme « mail » peut être trouvé dans les paquets suivants :
                                       * heirloom-mailx
                                       * mailutils
                                      Essayez : sudo apt-get install <paquet sélectionné>
                                      -bash: mail : commande introuvable


                                      c'est pas plutot sendmail, car mail n'existe pas...


                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        4 mai 2009 à 10:55:27

                                        installe mailutils, ça va être plus pratique que de passer par php (mail permet de rédiger un email depuis la console et l'envoie via postfix.)
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          4 mai 2009 à 10:59:36

                                          May  4 10:57:46 ubuntu-serveur postfix/smtp[1623]: B512DDFAE5: to=<user@ubuntu-serveur.myftp.org>, orig_to=<user@ubuntu-serveur>, relay=none, delay=15, delays=0.12/0.02/15/0, dsn=4.4.3, status=deferred (Host or domain name not found. Name service error for name=smtp.orange.fr type=MX: Host not found, try again)



                                          relay none???
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            4 mai 2009 à 11:10:56

                                            super nouvelle : smtp fonctionne.

                                            Moins bonne nouvelle : tes dns sont apparemment mal renseignées. que te ressort un
                                            cat /etc/resolv.conf

                                            T'inquiète pas pour le relais pour l'instant. Faut déjà que smtp le trouve.

                                            EDIT : tout bien réfléchi, ton port 25 n'est peut être pas ouvert en sortie. De quoi disposes tu comme routeur? Ouvre le port 25 dans les deux sens.
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              4 mai 2009 à 11:37:18

                                              resolv.conf:
                                              # Generated by NetworkManager
                                              domain home
                                              search home
                                              nameserver 192.168.1.1


                                              J'utilise une livebox et normalement mon port 25 est débloqué (vu que ma fonction mail fonctionnait sous windows avec ce port)
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                4 mai 2009 à 11:41:32

                                                Bon alors on va essayer autre chose :
                                                telnet smtp.orange.fr 25

                                                Est-ce que ça connecte?
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  4 mai 2009 à 11:43:00

                                                  oui, Connected to smtp.orange.fr
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    4 mai 2009 à 12:08:53

                                                    AhAh!

                                                    Je suis bête parfois

                                                    Orange essaye de retransférer le mail sur ton serveur mais il ne connait pas le nom de domaine.
                                                    Je viens de m'apercevoir que tu es sur un service de mappage dynamique d'IP...
                                                    Essaye cette config

                                                    myhostname = prozero.myftp.org
                                                    mydomain = prozero.myftp.org
                                                    alias_maps = hash:/etc/aliases
                                                    alias_database = hash:/etc/aliases
                                                    sender_canonical_maps = hash:/etc/postfix/sender-canonical
                                                    myorigin = /etc/mailname
                                                    relayhost = smtp.orange.fr
                                                    mynetworks = 127.0.0.0/8, 192.168.1.0/24
                                                    mailbox_command = procmail -a "$EXTENSION"
                                                    mailbox_size_limit = 0
                                                    recipient_delimiter = +
                                                    mydestination = prozero.myftp.org, localhost


                                                    redémarre postfix et envoie un mail sur ta boite gmail avec la commande mail :

                                                    echo "test de messagerie" | mail mon-nom@gmail.com -s mail de test


                                                    Puis regarde le log.

                                                    Je croise les doigts
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      4 mai 2009 à 12:54:07

                                                      Passe pas très bien le sender_canonical_maps = hash:/etc/postfix/sender-canonical
                                                      May  4 12:52:37 ubuntu-serveur postfix/cleanup[3996]: fatal: open database /etc/postfix/sender-canonical.db: No such file or directory
                                                      May  4 12:52:38 ubuntu-serveur postfix/master[24286]: warning: process /usr/lib/postfix/cleanup pid 3996 exit status 1
                                                      May  4 12:52:38 ubuntu-serveur postfix/master[24286]: warning: /usr/lib/postfix/cleanup: bad command startup -- throttling
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        4 mai 2009 à 12:55:59

                                                        Ok, commente cette ligne, c'est pas super important. On va y arriver :lol:
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          4 mai 2009 à 12:59:42

                                                          Marche pas :(
                                                          May  4 12:58:29 ubuntu-serveur postfix/error[4082]: 4767BDFAFA: to=<mon_mail@gmail.com>, relay=none, delay=0.09, delays=0.04/0.05/0/0.01, dsn=4.4.3, status=deferred (delivery temporarily suspended: Host or domain name not found. Name service error for name=smtp.orange.fr type=MX: Host not found, try again)


                                                          j'ai pas mis cette ligne :mailbox_command = procmail -a "$EXTENSION"

                                                          postconf -n
                                                          alias_database = hash:/etc/aliases
                                                          alias_maps = hash:/etc/aliases
                                                          append_dot_mydomain = yes
                                                          biff = no
                                                          config_directory = /etc/postfix
                                                          inet_interfaces = all
                                                          mailbox_size_limit = 0
                                                          mydestination = prozero.myftp.org, localhost, ubuntu-serveur, localhost.localdomain
                                                          mydomain = prozero.myftp.org
                                                          myhostname = prozero.myftp.org
                                                          mynetworks = 127.0.0.0/8, 192.168.1.1/24
                                                          myorigin = /etc/mailname
                                                          readme_directory = no
                                                          recipient_delimiter = +
                                                          relayhost = smtp.orange.fr
                                                          smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
                                                          smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
                                                          smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
                                                          smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
                                                          smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
                                                          smtpd_use_tls = yes

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            4 mai 2009 à 13:10:44

                                                            quel sac de noeud!

                                                            essaye sans relayhost pour voir...
                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              4 mai 2009 à 13:17:52

                                                              Non ça marche pas, il essaye d'utiliser gmail.com mais ça meme la meme erreur quavec orange...

                                                              J'ai vu beaucoup de monde sur le web qui résolve le problème en utilisant le smtp sécurisé de orange (smtp-msa.orange.fr:587) avec sasl? mais sa me parait bizzar, moi j'utilisait le port 25 et smtp.orange.fr sous windows...
                                                              http://www.blogjaune.fr/Orange_et_le_smtp
                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              Configurer fonction mail php sous Linux

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                              • Editeur
                                                              • Markdown