Fonctionnement de Debian + PostFix + Php5

J’aimerais savoir il est possible d’utiliser PostFix pour gérer l’envoie de mail sous Linux avec PHP 5 ?[/u]

l’envoi de mail par php se fout de l’os sous lequel il tourne, et du service smtp qui envoie, et ce n’est pas seulement pour la version 5.

Ok … ce n’est donc pas possible que PHP transmette un mail à postfix qui le transmettra au serveur SMTP ?

[quote=“RogerMaxson”]Ok … ce n’est donc pas possible que PHP transmette un mail à postfix qui le transmettra au serveur SMTP ?[/quote]non, ce n’est pas possible, mais ce n’est pas du tout ce que je t’ai dit.
postfix EST un serveur smtp et php (toutes versions) sait utiliser n’importe quel serveur smtp y compris postfix.

Donc par défaut, mail() utilise le serveur mail sur la machine pour envoyer un mail vers mon serveur SMTP Exchange.

Si j’ai bien compris.

ça, c’est encore autrechose.
mettons que tu installes postfix, il faudra que tu lui dise de relayer par ton exchange, sinon, il fera directement la desserte vers le smtp du destinataire:
relayhost=

J’ai suivi ca : http://www.coagul.org/article.php3?id_article=197

Evidement ca ne fonctionne pas (jamais vu un tuto qui fonctionne du premier coup)

/etc/postfix/main.cf

[code]mydomain = societer.com
myorigin = $mydomain

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

appending .domain is the MUA’s job.

append_dot_mydomain = no

Uncomment the next line to generate “delayed mail” warnings

#delay_warning_time = 4h

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=no
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache

See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for

information on enabling SSL in the smtp client.

myhostname = intranet
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = $mydomain, $myhostname, localhost.localdomain, localhost
relayhost = 192.168.2.10
mynetworks = 192.168.2.10/16
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
sender_canonical_maps = hash:/etc/postfix/intranet[/code]

Ensuite création du fichier aliases

root : root moi: moi@societer.com#postalias /etc/postfix/aliases

Puis création du fichier transport

societer.com smtp : 192.168.2.10#postmap /etc/postfix/transport

Dans PHP

mail('moi@societer.com', 'Le sujet', 'Exemple d\'envoi d\'email');Surement le fichier de config … pourtant ca doit être simple.

En passant, les log de postfix sont où ?

1/relayhost=192.168.2.10 je suppose que c’est l’ip de ton exchange ?
2/192.168.2.10/16 n’est pas correct: c’est 192.168.2.0/24 pour autoriser la frange de classe C, ou bien 192.168.2.10/32, si tu veux n’autoriser qu’une adresse. Le 127.0.0.0/8 doit appartenir à mynetworks.
3/la deuxiême ligne d’alias est mauvaise (elle provoque une boucle).
4/tu n’as pas mis de restriction smtpd_recipient_restrictions, ce qui fait de ton mailer un relai ouvert.
5/Ton fichier transport ne sert à rien puisque tu as déjà défini 192.168.2.10 comme relai pour tous les domaines, alors pas besoin de preciser pour societer.com
6/les logs sont dans /var/log, comme d’habitude, et les bons fichiers sont précisés dans lre tuto que tu indiques.
7/avant de t’interesser au php, si tu testais ton mail en ligne de commande ?
8/qu’est ce qui ne fonctionne pas ? l’envoi ? la reception ? Ton serveur exchange est il contacté par ton postfix ?

tout ce que je veut faire, c’est simplement envoyer des mails sur mon serveur de mail en local.

relayhost c’est mon serveur de mail.
Le pire avec le masque, c’est que j’ai compté le nombre de bit, 3*8 = 16 …
J’ai mis : smtpd_recipient_restrictions = permit_auth_destination
Dans le tuto tail -f /var/log/mail/info Chez moi tail -f /var/log/mail.info

J’avais cherché pour la ligne de commande, pas trouvé.
J’ai donc créer une page php.

[code]# See /usr/share/postfix/main.cf.dist for a commented, more complete version

Debian specific: Specifying a file name will cause the first

line of that file to be used as the name. The Debian default

is /etc/mailname.

mydomain = societer.com
myorigin = societer.com

smtpd_banner = intranet ESMTP $mail_name (Debian/GNU)
biff = no

appending .domain is the MUA’s job.

append_dot_mydomain = no

Uncomment the next line to generate “delayed mail” warnings

#delay_warning_time = 4h

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=no
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache

Restreins l’acces a mydestination

smtpd_recipient_restrictions = permit_auth_destination

See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for

information on enabling SSL in the smtp client.

myhostname = intranet
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname

MODIFICATION $myXXX

mydestination = societer, societer.com, intranet, localhost.localdomain, localhost

Serveur mail

relayhost = 192.168.2.10

Reseau

mynetworks = 192.168.2.0/24
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
sender_canonical_maps = hash:/etc/postfix/intranet[/code]

=> May 30 18:45:41 intranet postfix/cleanup[7206]: fatal: open database /etc/postfix/intranet.db: No such file or direct ory May 30 18:45:42 intranet postfix/master[7169]: warning: process /usr/lib/postfix/cleanup pid 7206 exit status 1 May 30 18:45:42 intranet postfix/master[7169]: warning: /usr/lib/postfix/cleanup: bad command startup -- throttling May 30 18:46:42 intranet postfix/cleanup[7207]: fatal: open database /etc/postfix/intranet.db: No such file or direct ory May 30 18:46:43 intranet postfix/master[7169]: warning: process /usr/lib/postfix/cleanup pid 7207 exit status 1 May 30 18:46:43 intranet postfix/master[7169]: warning: /usr/lib/postfix/cleanup: bad command startup -- throttling

Dans /var/log/mail.warn :

[quote]May 30 19:35:30 intranet postfix/master[2322]: warning: /usr/lib/postfix/cleanup: bad command startup – throttling
May 30 19:36:30 intranet postfix/cleanup[2497]: fatal: open database /etc/postfix/intranet.db: No such file or directory
[/quote]

Dans /var/log/mail.err

[quote]/etc/postfix/intranet.db: No such file or directory[/quote] Intranet étant le nom de ma machine, comment créer ce fichier ?

http://postfix.traduc.org/index.php/STANDARD_CONFIGURATION_README.html#null_client
Dans cet exemple, la machine ne fait que envoyer du courrier vers un serveur mail local.
Ca devrais répondre a ce que je veut.

Pour supprimer l’ancienne config, il suffit de supprimer les fichiers.
transport.db / aliases.db ? Il suffit de les supprimer ?

edit :

J’ai tout cassé à trop joué …

Reloading Postfix configuration...postfix: fatal: /etc/postfix/postfix-script: No such file or directory failed.Chose curieuse, c’est que ce répertoire n’exister pas auparavant.

intranet:/etc# dpkg-reconfigure postfix /usr/sbin/dpkg-reconfigure: postfix est cassé ou partiellement installé

Pour l’erreur :

J’ai créer un fichier vide et fait un chmod 777 dessus …

Mon fchier de config

[code]mydomain = societer.com
smtpd_banner = intranet 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=no
#smtpd_tls_session_cache_database = #btree:${queue_directory}/smtpd_scache
#smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache

#smtpd_recipient_restrictions = permit_auth_destination

myhostname = intranet
#alias_maps = hash:/etc/aliases
#alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = societer, societer.com, intranet, localhost.localdomain, localhost
relayhost = 192.168.2.10
mynetworks = 192.168.2.0/24
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
sender_canonical_maps = hash:/etc/postfix/intranet[/code]Je peut supprimer les smtpd_tls_ ? je n’ai pas de sécurité sur l’envoie.

Pour envoyer un mail en ligne de commande sous Linux debian.

#mail moi@societer.com -s sujet Ceci est un mail . Cc
http://www.parenthese.be/dotclear2/index.php/post/2006/02/22/Envoyer-un-mail-en-ligne-de-commande

[quote]intranet:/etc/postfix# /etc/init.d/postfix start
Starting Postfix Mail Transport Agent: postfix.
intranet:/etc/postfix# /etc/init.d/postfix check
intranet:/etc/postfix# postqueue -f
postqueue: fatal: Cannot flush mail queue - mail system is down
intranet:/etc/postfix# postqueue -p
postqueue: warning: Mail system is down – accessing queue directly
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
EE88532B44 146 Tue Jun 26 12:28:56 root
moi@societer.com

A984217B45 150 Tue Jun 26 17:07:24 root
moi@societer.com

– 0 Kbytes in 2 Requests.
intranet:/etc/postfix# cat main.cf
mydestination = $myhostname societer.com societer
mynetworks = 127.0.0.0/8 10.0.0.0/24 192.168.1.0/24

Optionel: transfert le courrier extéeur au pare-feu

#relayhost = [pare-feu.exemple.com]
relayhost = 192.168.1.1
intranet:/etc/postfix#[/quote]

Wtf ?

Mailx est il necessaire pour le fonctionnement de postfix ?

je ne sais pas, mais un conseil: purge, réinstalle, et modifie le fichier main.cf fourni par debian. Maintenant que “tu maitrises” tu peux y aller faire sans tuto le minimum de modif sans tuto.
Si mailx n’est pas installé comme dépendance de postfix, c’est qu’il n’est pas nécessaire à son fonctionnement , mais ça peut empêcher la desserte locale (quoi que ce soit plutot au MDA de faire ça).
La commande mail, qui sert à envoyer les mails en ligne de commande (comment ne l’as tu pas trouvée) est soit dans mailx, soit dans mail-utils.

J’aimerais bien !

Mais j’y suis vraiment allez comme un bourrin la première fois, et je suis de plus en plus certain d’avoir tout grillé.
Pour ma part, normalement, si on souhaite juste envoyer du courrier, il suffit d’avoir pour main.cf :
$relay_host = SERVEURMAIL