Hitno mi treba pomoc!
Prosli mjesec, firma u kojoj radim, je presla kod nove hosting kompanije. sada imamo dedicated SLES 10 php5/mysql5/apache2 based server.
PHP kod sam prebacio na novi server i uglavnom radi (bilo nekih malih promjena).
U sklopu jedne aplikacije, koristim mail() funkciju sa kojom saljem email (potvrda kupcu, narudzbenica proizvodjacu, potvrda da nas ne neko kontaktirao,…) Skripta je radila prije bez problema.
Sada, neki dobiju a neki ne. Skoro 100% sam siguran da je email poslan ali da je “rejected”.
Npr. posaljem sa istog formulara na svoju privatnu adresu i ne dobijem email. a posaljem na yahoo adresu i dobijem.
ov je header od email-a koji sam dobio na yahoo:
[quote]From Vernon Company Fri Jan 12 10:36:51 2007
X-Apparently-To: afanpasalic@yahoo.com via 209.191.91.164; Fri, 12 Jan 2007 10:34:42 -0800
X-Originating-IP: [199.199.209.198]
Return-Path: daemon@vernon.site
Authentication-Results: mta225.mail.re2.yahoo.comfrom=vernoncompany.biz; domainkeys=neutral (no sig)
Received: from 199.199.209.198 (EHLO vernon.site) (199.199.209.198)
by mta225.mail.re2.yahoo.com with SMTP; Fri, 12 Jan 2007 10:34:42 -0800
Received: by vernon.site (Postfix, from userid 2)
id 84765DAFC5; Fri, 12 Jan 2007 12:36:51 -0600 (CST)
To: afanpasalic@yahoo.com
Subject: Vernon Company Purchase Order (Order#: 123123123)
Content-type: text/html; charset=iso-8859-1
From: Vernon Company webmaster@vernoncompany.biz
Reply-To: afan@afan.net
CC: afan@afan.net
Message-Id: 20070112183651.84765DAFC5@vernon.site
Date: Fri, 12 Jan 2007 12:36:51 -0600 (CST)
Content-Length: 936[/quote]
koliko mogu vidjeti, izgleda kao da je poslano sa vernon.site - sto je pogresno!
Buni me i ovaj detalj:
Received: by slesvernon.site (Postfix, from userid 2)
Po ovome, php je koristio Postfix za slanje email-a. Medjutim, php koristi sendmail - ako drugacije nije receno. a u php.ini nigdje se ne spominje Postfix?!?
Sta treba da radim da ovo popravim? U YAST-u vidim da je Postfix up & running.
da li trebam imati mail server up and running da bih koristio mail() funkciju?
php koristi ( ako se ne varam ) /usr/sbin/sendmail ( link ) za slanje. pogledaj php dokumentaciju kako da koristis mail() funkciju i koje parametre prima kako bi mail izgledao kao da dolazi sa odredjene email adrese. takodjer postfix ( MTA ) bi trebao znati koji je hostname od servera ( vernon.site mi izgleda malo bedasto… )
Sta treba da radim da ovo popravim? U YAST-u vidim da je Postfix up & running.
Kao sto Ice rece, koristi sendmail link. U tvom slucaju on pokazuje na postfix.
php u tvom slucaju koristi /usr/sbin/sendmail , koji kad posaljes mail preko njega koristi postfix za daljnje slanje mail-a
postfix ti nije dobro iskonfigurisan … moraces se sa njim pozabaviti, pazi na open relay-ing , takodje pazi na definiciju FROM user-a u php mail() funkciji. Npr. yahoo odbija mail od anonymous@nesto.com, root@nesto.com, daemon@nesto.com i sl…
Mail poruka se moze konfigurirati da sadrzi i From: i Return-Path:. Da daemon nebi ubacio svoj dodatak da poruka dolazi od daemon@somesite.com koristi -f switch u mail() funkciji
Kad mi je to trebalo našao sam jedno 15ak različitih klasa, jednu sam uzeo koja mi se učinila dobra ali se kasnije pokazalo da ne valja (PHPMailer - http://phpmailer.sourceforge.net/). Tu sam ja prestao raditi na tom projektu i nemam pojma šta je na kraju uzeto. Znam da na php.net u komentarima ima 5-6 poludovršenih pokušaja.
Ukratko, drage volje bih onako od srca nešto preporučio ali nemam šta
Citiram sendmail_from string – Which “From:” mail address should be used in mail sent from PHP under Windows. This directive also sets the “Return-Path:” header.
Znaci ne treba se patiti jer je vec napravljeno prema rfc2821, ako sam dobro razumio
Try the following:
ini_set(sendmail_from,$fromaddress); // the INI lines are to force the From Address to be used !
mail($emailaddress, $emailsubject, $msg, $headers);
A SIMPLE THING ! Ovo bi trebalo stati na kraj takvim problemima
Mislim da je pogrešan izbor riječi, pošiljalac ne može ekplicitno postaviti Return-path header. Mail server na strani koja prima poruku zanemaruje postojeći, te sam odlučuje šta ide u Return-path header. Koristeći ‘sendmail -f’ pomažete mu u tom izboru