Installazione software · 8 min read · Sep 26, 2025

Installazione di iRedMail e Mailman su Debian Squeeze

Installazione di iRedMail e Mailman su Debian Squeeze

Versione: 1
Autore: Jason Norwood-Young
Ultima modifica: 22 dicembre 2011

Sono un grande fan di iRedMail, che è fondamentalmente una versione pacchettizzata di Postfix e degli altri componenti che rendono Postfix interessante, come Spamassassin, greylisting e un backend LDAP o MySql. Una cosa che desideravo con iRedMail è Mailman, il mio server di mailing list preferito. Integrare i due può essere una missione, quindi ecco alcune istruzioni per risparmiarti un bel po’ di dolore.

I ragazzi di iRedMail offrono una console di amministrazione gratuita per gestire gli account utente. Io mi abbono alla versione Pro della console di amministrazione di iRedMail, che è molto utile per i clienti per autogestirsi. Non ho nulla a che fare con iRedMail, a parte essere un cliente.

1. Configurazione del server

Sto installando su una nuova installazione di Debian Squeeze. La prima cosa che faccio sempre su un nuovo server è:

apt-get update   
apt-get upgrade   
dpkg-reconfigure tzdata

L’ultima riga ti consente di impostare il tuo fuso orario. Non è strettamente necessario per i nostri scopi, ma considero buona prassi impostarlo.

Ora dobbiamo impostare un nome di dominio completamente qualificato (FQDN). Questo significa che abbiamo bisogno di un dominio come mailserver.example.com invece di semplicemente mailserver. Per controllare qual è il tuo hostname, digita:

hostname -f

NOTA: Il nome di dominio che scegli dovrebbe essere diverso dal dominio email che desideri utilizzare. Se vuoi che la tua email provenga da [email protected], non rendere il nome del tuo server example.com - dagli un sottodominio come obiwan o captainkirk o (se sei noioso come me) mailserver.

Se hai già un FQDN, puoi passare al passo 2.

Il nome di dominio è impostato in due posti: /etc/hostname e /etc/hosts.

Modifica il tuo /etc/hostname per contenere il tuo FQDN (per i fini di questo tutorial userò mailserver.example.com).

Per il tuo file /etc/hosts, la tua prima riga dovrebbe apparire così:

127.0.0.1     mailserver.example.com mailserver localhost localhost.localdomain

Ora dobbiamo solo dire al sistema di registrare la modifica:

/etc/init.d/hostname.sh   
hostname -f

Dovresti ora vedere un FQDN. Se non ne ottieni uno, panico! Er, voglio dire riavvia e controlla di nuovo.

2. Installazione di iRedMail

Al momento della scrittura, la versione di iRedMail è 0.7.3. Controlla su www.iredmail.org per la versione più recente e adatta di conseguenza.

cd ~   
wget http://iredmail.googlecode.com/files/iRedMail-0.7.3.tar.bz2   
apt-get install bzip2   
tar xjf iRedMail-0.7.3.tar.bz2   
cd iRedMail-0.7.3   
bash iRedMail.sh

iRedMail installerà tutto ciò di cui hai bisogno. Accetta tutti i valori predefiniti tranne per il backend - scegli MySql invece di LDAP. Quando ti viene chiesto il tuo primo dominio email virtuale, inserisci example.com, NON mailserver.example.com. Rispondi Sì ogni volta che ti viene chiesto.

Ora hai un fantastico server di posta! È stato facile, eh?

3. Installazione di Mailman

Prima installiamo Mailman:

apt-get install mailman

Nota che Mailman non viene ancora avviato. Prima dobbiamo dire a Postfix di inviare email a Mailman quando riceve email da determinati indirizzi.

4. Configurazione dei Trasporti e degli Alias

Stiamo per creare un dominio virtuale chiamato lists.example.com, che useremo per tutte le nostre cose di Mailman. Ogni volta che qualcosa viene inviato al dominio lists.example.com, lo inoltreremo al programma Mailman invece di gestirlo come una normale email.

Poiché non vogliamo che la nostra mailing list sia sul dominio lists.example.com ma piuttosto solo example.com, imposteremo anche un sacco di alias per accettare le email inviate agli indirizzi Mailman su example.com e invece instradarle a lists.example.com.

Faremo tutto questo attraverso il database MySql. Punta un browser su https://example.com/phpmyadmin. Nota che è https e non solo http. Nota anche che se non hai un server dei nomi che punta già al tuo indirizzo IP, potresti dover aggiungere example.com al tuo file /etc/hosts sul tuo computer locale.

Accedi con l’utente root e la password che hai scelto durante l’installazione di iRedMail. Se non ricordi i dettagli, controlla ~/iRedMail-0.7.3/iRedMail.tips - iRedMail salva convenientemente le posizioni, i nomi utente e le password per tutti i servizi iRedMail lì.

Clicca sul database “vmail” nel pannello sinistro, e poi sulla scheda “SQL”. Incolla il seguente comando nella scheda (dopo aver cambiato il dominio con il tuo ovviamente) e premi Esegui:

INSERT INTO `vmail`.`domain` (`domain`, `description`, `disclaimer`, `aliases`, `mailboxes`, `maxquota`, `quota`, `transport`, `backupmx`, `defaultuserquota`, `defaultuseraliases`, `defaultpasswordscheme`, `minpasswordlength`, `maxpasswordlength`, `created`, `modified`, `expired`, `active`) VALUES ('lists.example.com', '', '', '0', '0', '0', '0', 'mailman:', '0', '1024', '', '', '0', '0', NOW(), '0000-00-00 00:00:00', '9999-12-31 00:00:00', '1');

Questo ha impostato il nostro Trasporto per ottenere tutto da lists.example.com all’app Mailman.

Ora dobbiamo aggiungere gli alias di Mailman. Dovrai farlo ogni volta che aggiungi una nuova lista a Mailman, basta cercare e sostituire “mailman” con il nome della tua nuova lista e rieseguire il SQL.

INSERT INTO `alias` (`address`, `goto`, `name`, `moderators`, `accesspolicy`, `domain`, `created`, `modified`, `expired`, `active`) VALUES
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1);

5. Configurazione di Postfix

Tornando alla riga di comando. Dobbiamo eseguire:

postconf -e 'relay_domains = lists.example.com'   
postconf -e 'mailman_destination_recipient_limit = 1'   
/etc/init.d/postfix reload

6. Disattivare il Greylisting

Ora probabilmente vorrai disattivare il Greylisting. Il Greylisting restituisce semplicemente tutte le email che riceve da un nuovo mittente. Se il mittente prova a inviare di nuovo dopo un po’, probabilmente non è un bot di spam. È molto efficace nel fermare lo spam, ma spesso significa ritardi tra qualcuno che ti invia un’email e tu che la ricevi. Nel caso di Mailman, se il messaggio a Mailman è ritardato di un’ora, rende il sistema poco reattivo - specialmente per i nuovi iscritti. Rende anche il testing un problema. Non è necessario disattivarlo - la prossima parte è facoltativa.

Modifica /etc/postfix-policyd.conf:

[...]
GREYLISTING=0
[...]

Ora riavvia il servizio di policy di Postfix:

/etc/init.d/postfix-policyd restart

7. Configurazione di Mailman

Stiamo per dire a Mailman di inviare email da @example.com invece di @lists.example.com. Tuttavia, tutti i link che invia devono provenire dal dominio lists.example.com. Questo perché stiamo per impostare un dominio virtuale solo per Mailman.

pico /etc/mailman/mm_cfg.py
[...]
DEFAULT_URL_PATTERN = 'http://%s/'
[...]
DEFAULT_EMAIL_HOST = 'example.com'
[...]
DEFAULT_URL_HOST = 'lists.example.com'

8. Configurazione di Apache

Siamo quasi alla fine. Dobbiamo solo configurare il server Apache per servire il sito web di Mailman ogni volta che andiamo su lists.example.com. Non dimenticare di impostare questo dominio in /etc/hosts o nel tuo nameserver.

pico /etc/apache2/sites-available/mailman
ScriptAlias /cgi-bin/mailman/ /usr/lib/cgi-bin/mailman/
Alias /pipermail/ /var/lib/mailman/archives/public/
Alias /images/mailman/ /usr/share/images/mailman/

    AllowOverride None
    Options ExecCGI
    AddHandler cgi-script .cgi
    Order allow,deny
    Allow from all
    Satisfy Any


    Options FollowSymlinks
    AllowOverride None
    Order allow,deny
    Allow from all


    AllowOverride None
    Order allow,deny
    Allow from all


    ServerName lists.example.com
    DocumentRoot /var/www/lists
    ErrorLog /var/log/apache2/lists-error.log
    CustomLog /var/log/apache2/lists-access.log combined
    
        Options FollowSymLinks
        AllowOverride None
    
    Alias /pipermail/ /var/lib/mailman/archives/public/
    Alias /images/mailman/ /usr/share/images/mailman/
    ScriptAlias /admin /usr/lib/cgi-bin/mailman/admin
    ScriptAlias /admindb /usr/lib/cgi-bin/mailman/admindb
    ScriptAlias /confirm /usr/lib/cgi-bin/mailman/confirm
    ScriptAlias /create /usr/lib/cgi-bin/mailman/create
    ScriptAlias /edithtml /usr/lib/cgi-bin/mailman/edithtml
    ScriptAlias /listinfo /usr/lib/cgi-bin/mailman/listinfo
    ScriptAlias /options /usr/lib/cgi-bin/mailman/options
    ScriptAlias /private /usr/lib/cgi-bin/mailman/private
    ScriptAlias /rmlist /usr/lib/cgi-bin/mailman/rmlist
    ScriptAlias /roster /usr/lib/cgi-bin/mailman/roster
    ScriptAlias /subscribe /usr/lib/cgi-bin/mailman/subscribe
    ScriptAlias /mailman/ /usr/lib/cgi-bin/mailman/
    ScriptAlias / /usr/lib/cgi-bin/mailman/listinfo

Ora dobbiamo solo abilitare questo host virtuale.

a2ensite mailman   
mkdir /var/www/lists   
apache2ctl restart

9. Creazione della tua prima lista

La prima lista di Mailman è sempre “mailman”. Per creare questa lista, esegui:

newlist mailman

Compila l’indirizzo email e la password dell’amministratore. Ti verrà chiesto di premere Invio per notificare l’amministratore. Quando lo fai, non riceverai immediatamente un’email. Abbiamo un altro passo da fare:

/etc/init.d/mailman start

Una volta fatto, l’amministratore della lista dovrebbe ricevere un’email con un link all’interfaccia di amministrazione della nuova lista.

Se funziona, vorrai anche testare le iscrizioni (basta inviare un’email vuota a [email protected]). Se ricevi una conferma di iscrizione e riesci a cliccare sul link, allora molto probabilmente tutto funziona al 100%. Se no, panico! Voglio dire, dai un’occhiata a /var/log/mail.log per avere un’idea di cosa stia andando storto.

Suggerimento: per tenere d’occhio il log delle email, usa:

tail -f /var/log/mail.log

Se hai bisogno di provare a ricreare la lista di Mailman, prima esegui:

rmlist mailman

10. Creazione di ulteriori liste

Per creare una lista chiamata “listname”, prima aggiungi gli alias della nuova lista alla tabella degli alias nel database MySql vmail:

INSERT INTO `alias` (`address`, `goto`, `name`, `moderators`, `accesspolicy`, `domain`, `created`, `modified`, `expired`, `active`) VALUES
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1);

Una volta fatto, esegui questo comando per creare una nuova lista:

newlist listname

Divertiti con il tuo nuovo server Mailman! Spero che tu possa creare delle fantastiche comunità email.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.