Installare un mail server in OSX: Postfix
di Gian Enrico Conti
16-08-2003

Nota della redazione: il tutorial che segue è adatto ad utenti che hanno un minimo di dimestichezza con l'uso del terminale con Mac OS X. L'autore e la redazione non si assumono responsabilità sugli eventuali danni causati dall'uso del tutorial stesso. E' sempre bene effettuare un backup delle impostazioni del vostro sistema e dei dati sensibili contenuti nel vostro computer.

Certo, il mondo usa l'accoppiata Intel/windozws, altra gente più fortunata hardware più decente (Sun, Hp) su cui far girare Unix, altri per motivi vari usano le solite tristi scatole a base intel a basso costo e ci montano Linux.

Ma esiste una bella fetta del mondo che usa computer che da 15 anni utilizza un approccio mentale diverso al computer, gente che vuole usare il proprio computer in modo intuitivo, senza dover essere un super-esperto, senza dover configurare l'universo e che funzioni appena connette qualcosa, non dimenticando un notevole senso estetico.
Sono malati, lo so, sono gli utenti che da 15 comprano Hw (e quindi Sw) sotto il simbolo della mela.

Non arricciate il naso, se lo fate non avete mai usato Mac, o avete tentato di usarlo come fosse un pc. Ora il lungo percorso di evoluzione hw/sw della casa di Cupertino è giunta a Unix: ogni nuovo Mac esce con OSX (10.2) preinstallato: fra qualche mese sarà la versione di UNIX più diffusa nel mondo.

Nell'ambiente scolastico (specie in quelle scuole dove lo skill tecnico non era elevato ma era p.es. di taglio artistico / grafico) il brand Apple è sempe stato forte: spero quindi di poter dare utili indicazioni a quelle scuole che hanno (per lor fortuna..) Mac e non anonimi cassoni di latta.

OSX dal punto di vista tecnico non è LINUX, ma benś UNIX, nella incarnazione BSD.
E' quindi basato su FreeBSD e sul kernel Mach, con una architettura dinamica, non monolitica alla Linux.

A parte questa premessa, vediamo come installare un server di posta in OSX.

Nota I: l'installer di OSX pre-installa sendmail, ma è per default disabiltato. Inoltre sendmail è il mail server più bacato e bucato della storia di Unix, quindi passiamo senza indugio a postfix.

Al solito partiamo dalla Rete: cosa esiste in rete se cerco con le keyword 'OSX' e 'postfix'?.

Si trova parecchio materiale, anche in ITALIANO.
Ma l'esterofilia impone di leggere materiale in inglese il sito da cui partire è http://www.postfix.org/, il sito naturale, ma pare interessante anche http://www.afp548.com un sito da gente 'tosta' sotto OSX.

Nota II: l'installazione avverrà in OSX 10.2.6 client, ma dovrebbe funzionare in modo analogo sotto OSX Server. (proverò..)

Nota III: Per editare I file si può usare qualunque editor, io ho usato pico. Evitate 'TexEdit', grafico e comodo, ma NON permette di salvare come root, a meno che loggate alla macchina come root fin dall'inizio.


I PASSI

a) scarichiamo il package. é la versione 2.0.9.

b) dobbiamo eseguire make, ma prima passiamo a root, perchè alcuni passaggi il README consiglia di farli come root.

c) Prima della vera installazione, bisogna creare alcuni particolari account, se tutto ok si passa alla installazione. Va quindi creato un account 'postfix' e relativi gruppi. Fortunamente per OSX esiste già un file apposito, 'niscript' dentro 'auxilliary/MacOSX'. I consueti comandi 'useradd'/'adduser' NON funzionano: OSX centralizza userid e account in NetInfo.
Apparirà a video


This script tries to create two groups (if they do not already exist):
- postfix
- maildrop
and tries to create a user (if it does not already exist)
- postfix
which is member of group postfix.
Will create postfix as gid 88
Will create maildrop as gid 89
Will create postfix as uid 88

Va ora creato il gruppo 'postdrop': (attenzione che il Gid sia libero):

sudo niutil -create / /groups/postdrop
sudo niutil -createprop / /groups/postdrop name postdrop
sudo niutil -createprop / /groups/postdrop gid 54321
sudo niutil -createprop / /groups/postdrop passwd '* "

Note>: 1) E' possibile creare tale gruppo da dentro NetInfo.

2) ho usato 54321> (come consigliato dai readme) ma qualunque gid libero è ok.

>c) Se apriamo 'NetInfo Manager' possiamo vedere come ha settato I privilegi del'utente postfix.


NOTA>: tralasciamo il caso di avere già installato sendmail funzionante: andrebbe effettuato un backup e messo fuori linea. (si veda su http://www.afp548.com/Articles/mail/postfix-solo.html)

d) ora ci facciamo davvero male: lanciamo 'make' dalla directory dei sorgenti, a video appare di tutto.
Se tutto OK 'make install': (le scelte per default sono OK per un uso normale, quindi 'Enter')

-/bin/sh postfix-install
Warning: if you use this script to install Postfix locally,
this script will replace existing sendmail or Postfix programs.
Make backups if you want to be able to recover.
Before installing files, this script prompts you for some
definitions. Most definitions will be remembered, so you have
to specify them only once. All definitions should have a
reasonable default value.
Please specify the prefix for installed file names. Specify this
ONLY if you are building ready-to-install packages for distribution
to other machines.
install_root: [/]

quanto specificato come opzione finirà in: /etc/postfix/main.cf.

riporto qui:

install_root: [/]
tempdir: [/Users/ingconti/Desktop/postfix-2.0.9]
config_directory: [/etc/postfix]
daemon_directory: [/usr/libexec/postfix]
command_directory: [/usr/sbin]
queue_directory: [/var/spool/postfix]
sendmail_path: [/usr/sbin/sendmail]
newaliases_path: [/usr/bin/newaliases]
mailq_path: [/usr/bin/mailq]
mail_owner: [postfix]
setgid_group: [postdrop]
manpage_directory: [/usr/local/man]
sample_directory: [/etc/postfix]
readme_directory: [no]

Alla fine appare:

Warning: you still need to edit myorigin/mydestination/mynetworks
parameter settings in /etc/postfix/main.cf.
See also http://www.postfix.org/faq.html for information about
dialup sites or about sites inside a firewalled network.
BTW: Check your /etc/aliases file and be sure to set up aliases
that send mail for root and postmaster to a real person, then
run /usr/bin/newaliases.


Se per verifica apriamo '/etc/postfix/main.cf':
troviamo dei valori di default.
Per passare al punto successivo dovremmo avere un FQDN (fully qualified domain name) ma il nostro G4 non ha un nome valido sulla rete.

Altro problema: siccome su OSX 10.2 è in funzione Rendezvous ( una tecnologia 'open' di Apple basata su 'zero config'), i servizi prendono il nome host da l ́ e quindi usano qualcosa del tipo 'G4Silver.local.'

Dobbiamo quindi in qualche modo modificare la 'logica'. La cosa da fare è modificare il file '/etc/hostconfig' :

Da: HOSTNAME=-AUTOMATIC-

A: HOSTNAME=-NO-

(questa modifica a HOSTNAME potrebbe interrompere servizi basati su Rendezvous: per i nostri test la cosa è tollerabile).

Passiamo a root e lanciamo pico e operiamo le modifiche.

sudo pico /etc/hostoconfig

Il nome al prompt diventerà il banale "localhost".

Già che siamo l ́ cambiamo:

MAILSERVER=-NO-

in:

MAILSERVER=-YES-

Ora bisogna configurare postifix modificando '/etc/postfix/main.cf'. Per sicurezza ne facciamo una copia:

cp /etc/postfix/main.cf etc/postfix/main.cf.original

passiamo a root e lanciamo pico:

sudo pico etc/postfix/main.cf

alla sezione: "INTERNET HOST AND DOMAIN NAMES" modifichamo il nome dell'host:

(ho lasciato commentato domain)

inet_interfaces = all

ho settato di usare tutte le intefacce, e poi:

mydestination = $myhostname
mynetworks = 192.168.1.0/24, 127.0.0.0/24

nella sezione ALIAS:

alias_maps = hash:/etc/postfix/aliases, netinfo:/aliases

notare che Postfix riconosce il db di NetInfo! (grande lavoro di porting. ndr)

alias_database = hash:/etc/postfix/aliases
mail_spool_directory = /var/mail
smtpd_banner = $myhostname ESMTP $mail_name

ora come superuser va ancora modifico il file 'defines' per setttare il path corretto di avvio per gli 'Startup Items': lo facciamo partire da /Library ( la directory di libreria Non di sistema) anzichè da quella che Apple ha deciso di sistema e che NON va toccata.

Ora da root: ( se non siete già);

./backup-postfix-binaries

e poi:

./activate-postfix

se vi da errore, è perchè postfix è già running. Fermatelo:

/usr/sbin/postfix stop

e rifate. Può apparire il messaggio:

StartupItem already exists.

Questo perchè gli ultimi installer già copiano molti file in automatico, o perchè avete già installato postifx.

Sempre da root:

newaliases

ed ora: REBOOT!

(il reboot è solo per testare che parta in automatico: manualmente basterebbe:

/usr/sbin/postfix start

Al riavvio, per verificare se postfix sia attivo:

telnet localhost smtp

se vi appare qualcosa del tipo:

telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 localhost ESMTP Postfix

siete ok. 'quit' per uscire.


Alcuni comandi utili:

/usr/sbin/postfix check

/usr/sbin/postfix reload

/usr/sbin/postfix start

/usr/sbin/postfix stop

se aprite process viewer dovreste vedere alcuni processi, di postfix:


VERIFICHE

Create un utente 'finto' dentro Mail, come p.es nella finestra seguente:

NOTA: questi settaggi non sono a rigore indispensabili per usare postfix, infatti postfix è un SMTP server, quindi creare un account coi settaggi pop3 è inutile, ma è un modo pratico di poter verificare I settaggi. La cosa fondamentale è poi aggiungere un 'outgoing mail server':

Clicchiamo sul poup alla voce 'addserver' ed aggiungiamo:


In questo modo potrò selezionare l'account 'test postifix' quando invio:

notare l'account di uscita, che userà postfix come smtp.

Se clicco su 'Send' la e-mail partirà e se apro la console posso controllare il Log di postfix:

tail -f /var/log/mail.log

vedrò:

localhost postfix/smtp[1279]: 5B799F7B01: to=<[email protected]>,
relay=relay.comm2000.it[212.97.32.9], delay=1, status=sent (250 2.0.0 h4IL2dHH024248 Message accepted for delivery)

che conferma che il messaggio è stato spedito ed accettato.

Dopo poco nel client di mail (Mail.app) avrò:

From: "test postfix ing.conti" <[email protected]>

Date: Dom mag 18, 2003 23:02:25 Europe/Rome

To: gian enrico conti <[email protected]>

Subject: test postifx


Post install benefici

Ora abbiamo su un MTA sulla macchina, che fare, a parte poter inviare la posta?
Ho provato allora usare e servizi PHP diposta, che necessitano di un SMPT server locale.
Creo una pagine PHP semplice, mailbomb.php:

<?php

session_start();

for ($i=0; $i<1000; $i++)

{

$res = mail("[email protected]", "My Subject"+$i, "Line 1\nLine 2\nLine 3");

}

echo "end<br>";

?>

e appena la chiamo dal browser, partono 1000 messaggi!.

Ovviamente la pagina va messa nella dir. Deil web server Apache, solitamente:

/Library/WebServer/Documents/

e va attivato Apache:

oppure da linea di comando:

apachectl start

 

L'Ing. Gian Enrico Conti è utente Mac da 15 anni e si occupa di sviluppo e assistenza su Computer Apple.
Per maggiori informazioni sulla sua attività potete visitare il sito www.ingconti.com/