Postfix & MySQL tables on Mac OS X
Condizioni strettamente necessarie:

Questo tutorial é impostato un po' come una ricetta di cucina.
Per cominciare vediamo gli ingredienti che ci servono per preparare la prima portata.

Questo é cio che serve per eseguire la compilazione di Postfix.

Mac OS X Developer Tools
Come prima cosa assicuratevi di avere i Developer Tools installati. (Nella root del vostro disco dovete avere una cartella Developer).
Nel caso non siano presenti scaricateli http://developer.apple.com/tools/ e installateli come un normale software applicativo per X (richiesta la password di amministratore).
Attenzione: i Developer tools pesano circa 200 Mb. e potrebbe essere un problema downloadarli, leggete su http://developer.apple.com/ i vari metodi per ottenere il software ad esempio su CD-ROM.
Con i Developer Tools potete ora compilare i source.

MySQL
Seguite le istruzioni sul sito http://www.entropy.ch/software/macosx/mysql/ e installate il package pre-compilato per il vostro Mac OS X, 10.1.X o 10.2.X, esse sono disponibili in lingua italiana all'URL http://www.tevac.com/entropy-ita/

GAWK
AWK é un programma che permette di agire velocemente sui files di testo, noi compileremo il software prendendolo dall'ftp mirror GNU AWK.
Quindi entrate in un terminale "Applicazioni>Utilities>Terminal" e digitate i comandi:

cd /
mkdir downloads
cd downloads
curl -O ftp://ftp.gnu.org/gnu/gawk/gawk-3.1.1.tar.gz

Siete usciti nella root, avete creato una directory downloads e vi avete downloadato all'interno i source delle GAWK in formato compresso.
Continuiamo l'installazione:

tar zxvf gawk-3.1.1.tar.gz
cd gawk-3.1.1
sudo ./configure
sudo make
sudo make install

Avete decompresso i source siete entrati nella loro cartella avete configurato i files , compilato e installato. (il comando sudo richiede la password di amministratore)

PCRE Perl Compatible Regular Expressions
Eseguiamo la procedura di installazione per le PCRE.

cd /
cd downloads
curl -O ftp://ftp.linux.it/pub/mirrors/postfix/official/pcre-2.08.tar.gz
cd pcre-2.08
perl -i~ -pe '/^RAN/ and s/\@true/ranlib/;' \
Makefile
sudo mkdir -p /usr/local/man/man3
sudo make
sudo make install
ranlib /usr/local/lib/libpcre.a

Postfix www.postfix.net

Ora siamo pronti per compilare e configurare Postfix.
Innanzitutto aggiungiamo lo user Postfix al sistema.

echo 'postfix:*:23456:postfix' | sudo niload group /
echo 'maildrop:*:23457:' | sudo niload group /
echo 'postfix:*:23456:23456::0:0:Mail:/tmp:/usr/bin/false' | \
sudo niload passwd sudo nicl / -create /aliases/root members $1
sudo kill -HUP `cat /var/run/lookupd.pid`

Rimuoviamo sendmail l'MTA incluso con Mac OS X

sudo chmod a-s /usr/sbin/sendmail
sudo mv /usr/sbin/sendmail /usr/sbin/sendmail.OFF
sudo mv /usr/bin/newaliases /usr/bin/newaliases.OFF
sudo mv /usr/bin/mailq /usr/bin/mailq.OFF

Prepariamo la cartella temp necessaria durante il passo successivo, essa andrà specificata durante lo script di installazione di Postfix.

cd /
mkdir temp

Scarichiamo, compiliamo, installiamo e configuriamo Postfix con supporto MySQL

cd /
cd downloads
curl -O ftp://ftp.linux.it/pub/mirrors/postfix/official/postfix-2.0.15.tar.gz
tar zxvf postfix-2.0.15.tar.gz
cd postfix-2.0.15
sudo make -f Makefile.init makefiles \
'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include' \
'AUXLIBS=-L/usr/local/mysql/lib -lmysqlclient -lz -lm'
sudo make
sudo make install

Durante l'installazione, uno script di configurazione vi chiederà di impostare diversi valori, lasciate tutto al default tranne la temporary directory che andrà impostata al valore /temp e il gruppo che anziché postdrop andrà settato a maildrop.
Fatto questo abbiamo compilato postfix specificando (opzione -I) la directory dove sono contenuti gli header di mysql e (opzione -L) le libm (AUXLIBS), per ulteriori informazioni leggere il README compreso nella distribuzione di postfix.

Configurare Postfix e MySQL

I File sui quali dovremo agire sono storati sostanzialmente in questi 2 path:

  • /etc/postfix File di configurazione
  • /usr/sbin File di comando

Scaricate sul vostro desktop l'archivio dei file di configurazione precompilati. http://www.kdev.it/config/postfix.tgz
Decomprimeteli con StuffIt e spostate la cartella Archive appena apparsa sul desktop, nella root del vostro disco, trascinandola sull'icona dell'HD.
Entrate nella cartella /etc/postfix e spostate mediante questi comandi i file di configurazione nella cartella /etc/postfix

cd /etc/postfix
sudo mv /Archive/mysql-aliases.cf /etc/postfix
sudo mv /Archive/mysql-virtual.cf /etc/postfix

All'interno di questi 2 file si trovano i parametri di connessione alle tabelle del DB MySQL contenente rispettivamente gli alias e le virtual maps.
Dato che non abbiamo ancora nessun database dobbiamo crearcene uno.
Se avete a disposizione phpmyadmin http://www.phpmyadmin.net create il nuovo Db chiamandolo mail e utilizzate il file mail.sql che trovate nella directory Archive nel vostro HD per aggiungervi le necessarie tabelle. Questo si attua semplicemente selezionando il Db dal menù popup nel frame sinistro di phpmyadmin, cliccando sulla voce nelle tab superiori del frame centrale SQL e selezionando il file mail.sql dalla directory Archive nell'HD.

Nel caso non abbiate phpmyadmin potete da terminale usare i comandi:

mysql --user=root mysql
Enter password: (USER root di mysql non system ROOT)
CREATE DATABASE mail;
#Creiamo la tabella degli Alias#
CREATE TABLE alias (
alias_name varchar(30) NOT NULL default '',
system_name varchar(8) NOT NULL default '',
status varchar(15) NOT NULL default 'paid',
PRIMARY KEY (alias_name)
) TYPE=MyISAM;
#Creiamo la tabella delle Virtual Maps#
CREATE TABLE virtual (
id bigint(16) NOT NULL default '0',
system_name varchar(64) NOT NULL default '',
domain_map varchar(64) NOT NULL default '',
status varchar(15) NOT NULL default 'paid',
PRIMARY KEY (id),
KEY system_name (system_name)
) TYPE=MyISAM;

Ora dovete creare un nuovo user per permettere a postfix di eseguire delle select sul DB.
Potete utilizzare webmin nel modulo MySQL oppure da terminale battete:

mysql --user=root mysql

(questo comando si esegue per collegarsi a mysql se siete gia in una shell mysql> passate oltre)

GRANT SELECT
      ->    ON mail.*
      ->    TO postfix@localhost
      ->    IDENTIFIED BY 'password'; Metti al posto di password quello che desideri ma ricordatela!
FLUSH PRIVILEGES;

OK! ora mysql é configurato per poter accogliere le richieste di postfix, ma ora dobbiamo dire a postfix cosa fare:
Innanzitutto torniamo nella directory /etc/postfix dove risiedono le nostre configurazioni e mettiamo nei 2 file aggiunti prima la password impostata in mysql per lo user postfix

cd /etc/postfix
sudo pico mysql-aliases.cf

Sostituisci come indicato di seguito. Premi ctrl+x per uscire e y per confermare il salvataggio.

user = postfix
password = password <-- la password
dbname = mail
table = alias
hosts = localhost
select_field = system_name
where_field = alias_name
additional_conditions = and status = 'paid'

Esegui la stessa operazione sul file mysql-virtual.cf quindi sostituisci la password esci e salva.

sudo pico mysql-aliases.cf

Ora rimane da editare il file main.cf

sudo pico main.cf

Specificate il parametro myhostname = host.domain.tld togliendo il cancelletto da davanti e scrivendo il nome della vostra macchina.
cercate scorrendo il file la voce ADDRESS REDIRECTION (VIRTUAL DOIMAIN)
inserite questa riga che specifica quale mappa dei domini virtuali utlizzare:

virtual_maps = mysql:/etc/postfix/mysql-virtual.cf

cercate ora scorrendo il file la voce ALIAS DATABASE
inserite questa riga che specifica quale mappa degli alias utlizzare:

alias_maps = mysql:/etc/postfix/mysql-aliases.cf

Uscite dall'editor pico con ctrl+x confermate il salvataggio con y.

adesso lanciate postfix con

sudo postfix start

se tutto é stato eseguito correttamente scrivendo

telnet 0 25
Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'.
220 mail.kdev.it ESMTP Postfix

IL SERVER E' STATO INSTALLATO! Ora non vi resta che compilare i db con le vostre mappature e il gioco é fatto.

Se avete riscontrato qualche problema nelle istruzioni, o necessitate chiarimenti o approfondimenti scrivete a This e-mail address is being protected from spam bots, you need JavaScript enabled to view it