mail form con php, apache e selinux

Buongiorno a tutti.

Sto cercando di far funzionare uno script php che automaticamente mi invii il contenuto di un form html via mail.

Ho quindi attivo e funzionante Apache e php.

Come richiesto da Selinux troubleshooter ho abilitato l’invio di mail con setsebool -P httpd_can_sendmail=1.
Non appena fatto questo, il server ha cominciato ad andare a velocità bassissima nel caricare le pagine, come non aveva mai fatto prima. Al riavvio…la schermata iniziale mi ha segnalato : “ops something has gone wrong and the system can’t recover”. Dopo essermi loggato di nuovo…non c’è stato verso di connettersi ad internet; il server funzionava ma in maniera lentissima. Ho provato a dare un “relabel” Selinux, tramite selinux-system-config,…ma niente, sempre lo stesso. Ho anche provato a disbilitare l’invio di mail abilitato con il comando più su indicato.

In breve…cambiando router sono invece riuscito a connettermi di nuovo ad internet…

c’è qualcuno che ha una vaga idea di cosa possa essere successo?

Dopo tutto ciò…dopo aver completato il form e dato “submit”…dopo un lunghissimo caricamento della pagina…la mail non si vede…tenderei umilmente ad escludere errori di sintassi dal momento che questi mi sono stati indicati uno ad uno fino ad averli corretti tutti avendo io attivato

[quote=marcomotta]
In ogni caso, se in /etc/php.ini modifichi (nel mio file è alla riga 478

display_errors = Off

in

display_errors = On; Off

(MAI farlo in produzione, solo nella fase di test), al posto della pagina bianca dovrebbe comparirti un messaggio di errore.[/quote]
come consigliatomi dall’ottimo marcomotta che ringrazio…

ogni consiglio mi giungerà come pioggia nel deserto. :doc:

grazie a tutti.

Escluderei rallentamenti da parte di apache o SElinux. Forse è da imputare ad altro…Hai guardato con il comando top cosa consuma risorse?
Il server sendmail è abilitato e avviato?

al momento mi sto documentando su sendmail…:

/etc/php.ini :

[code][mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = localhost
; http://php.net/smtp-port
smtp_port = 25

; For Win32 only.
; http://php.net/sendmail-from
;sendmail_from = [email protected]

; For Unix only. You may supply arguments as well (default: “sendmail -t -i”).
; http://php.net/sendmail-path
sendmail_path = /usr/sbin/sendmail -t -i
[/code]

# sestatus -b | grep sendmail gitosis_can_sendmail off httpd_can_sendmail on logging_syslogd_can_sendmail off

per il resto…non ho toccato per niente sendmail al momento.

Non ho ancora controllato con top.

Grazie!

Output:

$ systemctl status sendmail

$ systemctl status sendmail sendmail.service - Sendmail Mail Transport Agent Loaded: loaded (/usr/lib/systemd/system/sendmail.service; enabled) Active: active (running) since Tue, 02 Apr 2013 10:11:43 +0200; 46min ago Process: 877 ExecStart=/usr/sbin/sendmail -bd $SENDMAIL_OPTS $SENDMAIL_OPTARG (code=exited, status=0/SUCCESS) Process: 871 ExecStartPre=/etc/mail/make aliases (code=exited, status=0/SUCCESS) Process: 868 ExecStartPre=/etc/mail/make (code=exited, status=0/SUCCESS) Main PID: 896 (sendmail) CGroup: name=systemd:/system/sendmail.service └ 896 sendmail: accepting connections ...

grazie

Allora, la mia domanda è: per fare in modo che un webserver possa inviare mail tramite la mail function di php…devo configurare sendmail? O ci sarebbe forse la possibilità di appoggiarsi ad un SMTP di posta elettronica presso il quale ho un account di posta?

In fedora non hai necessità di fare alcuna configurazione per inviare email con php. Di base è già tutto configurato per questo funzionamento.

Se vuoi puoi sempre utilizzare un smtp esterno per l’inoltro della posta.
Ci fai vedere il codice php?

ok…per la verità sto provando un php basilare, tanto per essere sicuro che la funzione mail funzioni.

ecco qua:

<?php $to = "[email protected]"; $subject = "Hi!"; $body = "Hi,How are you?"; $from = "[email protected]"; mail($to, $subject, $body, $from); ?>

Grazie!

edit: come potrei utilizzare un smtp esterno?

Perfetto, il from mettilo così:

'From: [email protected]'

In ste condizioni invia il messaggio?

in che senso scusa? è una prova.

edit: ahh scusa avevo capito…“in ste condizioni invII il messaggio?”… :ooops:

ora provo con il tuo suggerimento.

Grazie

no niente da fare.

/var/log/maillog mi dice "message accepted for delivery" ma del messaggio neanche l’ombra.

[quote=artax]no niente da fare.

/var/log/maillog mi dice "message accepted for delivery" ma del messaggio neanche l’ombra.[/quote]
Di solito le email inviate da sendmail sono cestinate dai filtri antispam dei provider di posta elettronica. Io consiglio di usare l’smtp del proprio provider. Per esempio io ho un’email Tiscali, e faccio (come root):

yum install sendmail-cf
cp /etc/mail/sendmail.mc /etc/mail/sendmail.mc.backup
sed -i s/"dnl define(\`SMART_HOST', \`smtp.your.provider')dnl"/"define(\`SMART_HOST', \`smtp.tiscali.it')dnl"/g  /etc/mail/sendmail.mc
make -C /etc/mail
systemctl restart sendmail.service

Fai ripartire, per scrupolo (anche se forse questo non è necessario) anche apache, e riprova.
Ovviamente, al posto di “smtp.tiscali.it” usa l’smtp del tuo provider (con altri provider, verifica che non serva modificare anche altre impostazioni).

ti ringrazio.

per completezza…le mail inviate con php non me le ritrovo neanche nelle cartelle spam.

Anche con Pear Mail dovrebbe essere possibile settare un smtp esterno, ora provo…

sono graditi suggerimenti consigli e quant’altro…

in particolare, circa quanto ho detto nel post 1 circa il router che ha smesso di schianto di funzionare e non ne vuole sapere di ripartire…prima di resettarlo vorrei capire cosa può essere successo…

grazie!

[quote=marcomotta]
Di solito le email inviate da sendmail sono cestinate dai filtri antispam dei provider di posta elettronica. Io consiglio di usare l’smtp del proprio provider. Per esempio io ho un’email Tiscali, …[/quote]

sto provando, seguendo questa https://fedoraproject.org/wiki/Archive:Docs/Drafts/AdministrationGuide/Servers/MailServer/Sendmail#Smart_Host, a far funzionare sendmail con l’smtp di gmail.

nel caso di gmail la procedura non è quella base indicata dalla guida, manca qualche step, se qualcuno ha qualcosa da suggerire è il benvenuto. :beer:

[quote=marcomotta] Io consiglio di usare l’smtp del proprio provider. Per esempio io ho un’email Tiscali
.[/quote]

per potermi servire dell’SMTP del mio ISP…devo per forza avere una mail con loro?

Usa l’smtp della tua connessione web.

Direi proprio di sì. Non solo, ma mentre con gmail e altri puoi essere connesso con chi ti pare (basta che tu abbia un account gmail), con Tiscali e altri, se non ricordo male, devi usare la loro connessione per poter mandare email tramite il loro server smtp. Quindi niente smtp con Tiscali se ti colleghi ad Internet con Infostrada, o con Libero se ti colleghi ad Internet con Telecom, ecc.

@marcomotta

si, difatti ad esempio thunderbird non funge con un account libero.it ti connetti con un provider diverso da infostrada o come si chiamano oggi.

Io intendevo dire…al momento il mio provider è teletu…ma non ho una casella di posta elettronica con loro, tipo [email protected]

Posso comunque usare il loro server smtp per l’invio di mail dal mio web server?

Ho provato come mi hai suggerito più su, come tu hai fatto con tiscali…cioè modificando /etc/mail/sendmail.mc così:

dnl # Uncomment and edit the following line if your outgoing mail needs to dnl # be sent out through an external mail server: dnl # define(`SMART_HOST', `smtp.teletu.it')dnl

ma qualcosa ancora manca evidentemente perché la mail non arriva a destinazione.

Ovvio che se per usare il loro SMTP devo per forza avere una casella e-mail con loro…normale che non funzioni, infatti vorrei capire se è questa la causa.

circa le porte, teletu richiede la porte 587…che ho aperto sul firewall e sul router come port forwarding…tu come hai gestito la faccenda con tiscali?

grazie

Guarda, penso che possa dipendere dal provider. Con Tiscali non serve autenticazione, quindi suppongo che non controllino se ho un’email con loro (ma se uso la loro connessione, HO la loro connessione, e quindi mi hanno fornito sicuramente un’email loro. Con teletu non ho idea.
Con Gmail puoi ottenere un’email usare il loro server smtp per mandare email, ma devi autenticarti, quindi devi dare nome utente e password. Tra l’altro mi sembra che Gmail lavori su connessione protetta, quindi con ssl.
Non so dirti di più, mi dispiace.