Sendmail può essere lanciato in diversi modi per eseguire operazioni diverse.
Alcune opzioni possibili corrispondono a comandi con nomi diversi, che di fatto eseguono Sendmail con modalità specifiche.
A titolo di reference vengono elencate le principali opzioni con cui Sendmail può essere lanciato.
hoststat (sendmail -bh)
Stampa statistiche sullo stato persistente dell'host, con informazioni sulle mail che ha gestito. Questo è possibile solo se è attivata l'opzione HostStatusDirectory:
sendmail.cf: O HostStatusDirectory=/path/to/dir
sendmail.mc: define(`confHOST_STATUS_DIRECTORY',`/path/to/dir')
Con hoststat -v
vengono visuliazzate le righe di info per esteso.
purgestat (sendmail -bH)
Ripulisce (rimuove) tutte le statistiche sullo stato persistente dell'host, presenti nella directory definita con l'opzione HostStatusDirectory.
Questo secondo il manuale, di fatto, almeno sul Sendmail di RedHat 9, con attivata la suddetta opzione, questo comando non sembra avere alcun effetto.
mailq (sendmail -bp)
Visualizza l'elenco delle mail in coda. La directory in cui sono salvate è definita con l'opzione QueueDirectory:
sendmail.cf: O QueueDirectory=/path/to/dir
sendmail.mc: define(`confQUEUE_DIR',`/path/to/dir')
Di default è /var/spool/mqueue
newaliases (sendmail -bi)
Ricostruisce il database degli alias generando il file /etc/aliases.db
(di solito, se si usa il database db di default) rendnedo attive le modifiche fatte su /etc/aliases
.
Considerare che gli script di startup (/etc/init.d/sendmail start
) previsti in molte distribuzioni automaticamente prima di lanciare il demone Sendmail eseguono un newaliases.
smtpd (sendmail -bd)
Lancia Sendmail in daemon mode, lasciando il processo in ascoltro sulla porta 25 (di default) e restituendo la shell. E' la modalità tipicamente utilizzata su un server SMTP che riceve posta.
sendmail -bm (default)
Invocato con questa opzione di default Sendmail invia il messaggio che gli arriva in standard input ai destinatari specificati come argomento della command line.
sendmail -bs
Questa è la modalità con cui lanciare Sendmail tramite (X)inetd: viene invocato in foreground, accetta i messaggi in stdin, consegna il messaggio e si chiude. In server di posta che lo utilizzano in questo modo (e non come demone sempre attivo) è opportuno processare periodicamente la coda dei messaggi in uscita (crontabbando un sendmail -q
)
sendmail -bt
Entra in modalità di test, con cui è possibile verificare come funzionano le regole di instradamento della posta. Si presenta una shell in cui è possibile premere ? per visualizzare un elenco dei comandi possibili.
Utile per troubleshooting e debugging avanzati.
sendmail -C /path/to/sendmail.cf
Utilizza un file di configurazione alternativo rispetto al solito /etc/sendmail.cf o /etc/mail/sendmail.cf. Utile per test sulle configurazioni.
sendmail -q
Processa la coda di mail in uscita. Comodo se si non si vogliono aspettare i tempi preimpostati e si vuole immediatamente processare la posta in coda. Può essere lanciato anche mentre un'altra istanza di Sendmail è in esecuzione in daemon mode.
sendmail -q30m
Esegue Sendmail in background e processa la coda di posta ogni 30 minuti. Può essere utile su sistemi che si colelgano in dialup ad Internet per evitare di alzare una connessione ogni volta che c'è un messaggio in uscita.
sendmail [email protected]
Processa tutta la posta in coda che ha come destinatari degli indirizzi che terminano con @dominio.com
sendmail -d (sendmail -d0-99.1)
Esegue Sendmail in debugging mode, utile per ottenere una grande quantità di informazioni su come è stato compilato e come gestisce e processa le sue macro. Esistono numerose modalità di debugging, definibili con una coppia di numeri separati da un punto che definisce la categoria di debugging e il livello di verbosità.
Se non si specifica nulla Sendmail di default visualizza il debugging per tutte le categorie (0-99) con livello 1.
Notare che in modalità di debug Sendmail funziona normalmente, per cui è possibile scrivere l'indirizzo del destinatario e il corpo del testo (da concludere con un punto "." e un INVIO) e vedere come Sendmail processa il messaggio
Alcune interessanti parametri (il secondo valore, che indica il livello di debug, può arrivare a 127, ma si consiglia di non superare il valore 99, anche se spesso gli output sono uguali anche a differenza di livello):
sendmail -d0.20
- Visualizza informazioni sulla versione, le opzioni compilate, il nome locale e le regole di delivery
sendmail -d8.20
- Visualizza informazioni sulle procedure di DNS lookup per il record MX del dominio destinatario.
sendmail -d10.20
- Visualizza informazioni sul destinatario del messaggio
sendmail -d11.20
- Traccia informazioni sulla consegna del messaggio
sendmail -d21.2
- Traccia le macro per il rewriting degli indirizzi
sendmail -d27.9
- Traccia le operazioni di aliasing
sendmail -d31.2
- Traccia il processing degli header della mail
sendmail -d41.50
- Informazioni sulla coda dei messaggi
sendmail -d48.2
- Traccia le chiamate ai rule sets check_
sendmail -d0-99.3
- Visualizza informazioni di debug su ogni categoria, con livello di verbosità 3
Generalmente su gran parte delle distribuzioni Linux, Sendmail viene installato di default e in molti casi viene eseguito all'avvio per restare in ascolto sulla porta 25 del localhost.
In questo modo viene usato per inviare la posta locale, ma non rimande in ascolto su un indirizzo pubblico.
Il pacchetto con cui viene fornito è sendmail ma in molti casi, se si vuole usare Sendmail su un server di posta SMTP che deve ricevere posta via rete, è necessario installare anche il pacchetto sendmail-cf che contiene le macro M4 necessarie per processare il file /etc/mail/sendmail.mc
(avente un formato semplice e comodo da modificare) e generare il file di configurazione /etc/mail/sendmail.cf
(con una sintassi piuttosto complessa ed intricata.
Installazione da RPM
La procedura è la solita. Ecco un esempio su Fedora 2:
rpm -i sendmail-8.12.11-4.6.i386.rpm
Fra i file installati si segnalano:
/etc/mail/ La directory dove sono inseriti tutti i file di configurazione
/etc/mail/access Il file che definiscea chi Sendmail permette il relay e a quali host vengono rifiutati
/etc/mail/local-host-names L'elenco dei domini per cui Sendmail riceve posta
/etc/mail/sendmail.cf Il file di configurazione
/etc/mail/sendmail.mc Il file M4 "human readable" con cui viene generato sendmail.cf
/etc/rc.d/init.d/sendmail Lo script di avvio e gestione del servizio Sendmail
/etc/sysconfig/sendmail Parametri e impostazioni che definiscono con quali argomenti viene lanciato Sendmail
/usr/sbin/sendmail.sendmail Il programma sendmail vero e proprio, per permettere la coesistenza con altri MTA (Postfix) il comando /usr/sbin/sendmail è un link che punta al file /etc/alternatives/mta che a sua volta è un link al programma vero e proprio
/var/log/mail/statistics File di statistiche sui movimenti di posta
/var/spool/mqueue La directory che contiene i messaggi di posta in coda
Installazione da sorgenti
Compilare Sendmail dai sorgenti è particolarmente semplice. Basta scaricare dal sito ufficiale i sorgenti:
[al@localhost al]$ wget ftp://ftp.sendmail.org/pub/sendmail/sendmail.8.12.11.tar.gz
Scompattarli:
[al@localhost al]$ tar -zxvf sendmail.8.12.11.tar.gz
Lanciare lo script Build che provvede a compilare i sorgenti (di fatto è un make):
[al@localhost al]$ cd sendmail-8.12.11 ; ./Build
Copiare i file nelle directory di installazione (bisogna avere i privilegi di root):
[al@localhost sendmail-8.12.11]$ su ; ./Build install