In alcuni casi abbiamo bisogno di un modo per inviare le email dal nostro web server locale attraverso la funzione PHP mail(), ma quando ci si scontra con Sendmail la cosa ci fà un po impallidire, Sicuramente sendmail è un software valido, potente e molto versatile, ma molto complesso sia per quanto riguarda il funzionamento sia per quanto riguarda la configurazione. Per ovviare al problema arriva in nostro soccorso un software veramente leggero e facile da configurare, sSMTP. Ma passiamo subito alla pratica:

  • Installare ssmtp e abbastanza semplice, se siamo in un ambiente Debian/Ubuntu e simili basta un apt-get install ssmtp ma lo stesso vale per Fedora e simili, sicuramente troverete il modo di farlo quindi andiamo avanti visto che questo non è oggetto del post.
  • Appena installato possiamo modificare con il nostro editor preferito, vi, il file di configurazione che troviamo in /etc/ssmtp/ssmtp.conf commentando o aggiungendo le righe come le troviamo all’interno del file che segue:
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
#root=mioindirizzo@dominio.tld

# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.mioserversmt.tld

# Where will the mail seem to come from?
#rewriteDomain=

# The full hostname
#hostname=www.altropiano.com

#UseSTARTTLS=YES
AuthUser=nomeutente
AuthPass=password

#AuthMethod=LOGIN

# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES
  • Una volta configurato ssmtp possiamo passare alla modifica del file di configurazione di php.ini, il file di configurazione di PHP che troviamo in /etc/php5/apache2/php.ini , se su sistemi debian-like cercando lla direttiva che troviamo di seguito inserendo il path di ssmtp:
; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
sendmail_path = /usr/sbin/ssmtp -t
  • Ora non ci resta che riavviare il server web apache in modo che il php.ini venga ricaricato;
/etc/init.d/apache2 restart
  • Arrivati a questo punto abbiamo finito quindi non ci resta che testare il funzionamento ad esempio inviando una mail di prova da riga di comando digitanto:
$ ssmtp emaildestinatario@dominio.tld
invio a vuoto
testo del messaggio ed invio
ctrl-d per finire;

oppure

$ mail -s "Oggetto del messaggio" emaildestinatario@dominio.tld
CC: emailincopia@dominio.tld
testo del messaggio
inserire un punto in una riga vuota e premere invio per finire;
  • E qui siamo veramente alla fine. Se volete fare un ulteriore test potete crearvi un file php ad hoc che implementi la funzione mail(). Se avete riscontrato qualche problema o trovate delle imprecisioni o volete solo dire la vostra sentitevi liberi di commentare.

— Fine —
Post scritto con KBlogo