GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Utenti virtuali e domini con Postfix, Courier, MySQL e SquirrelMail (Ubuntu 14.04LTS)

Questo tutorial è protetto da Copyright (c) 2014 di Falko Timme e Srijan Kishore. È derivato da un tutorial di Christoph Haas che puoi trovare su http://workaround.org. Sei libero di utilizzare questo tutorial con la licenza Creative Commons 2.5 o qualsiasi versione successiva.

Questo documento descrive come installare un server di posta Postfix basato su utenti e domini virtuali, ovvero utenti e domini che si trovano in un database MySQL. Dimostrerò anche l'installazione e la configurazione di Courier (Courier-POP3, Courier-IMAP), in modo che Courier possa autenticarsi sullo stesso database MySQL utilizzato da Postfix.

Il server Postfix risultante è in grado di SMTP-AUTH e TLS e quota (quota non è incorporata in Postfix per impostazione predefinita, mostrerò come applicare una patch a Postfix in modo appropriato). Le password sono archiviate in crittografate modulo nel database (la maggior parte dei documenti che ho trovato riguardavano password in testo normale, il che rappresenta un rischio per la sicurezza). In aggiunta a ciò, questo tutorial copre l'installazione di Amavisd , SpamAssassin e ClamAV in modo che le e-mail vengano scansionate alla ricerca di spam e virus. Mostrerò anche come installare SquirrelMail come interfaccia webmail in modo che gli utenti possano leggere e inviare e-mail e modificare le proprie password.

Il vantaggio di tale configurazione "virtuale" (utenti virtuali e domini in un database MySQL) è che è molto più performante di una configurazione basata su utenti di sistema "reali". Con questa configurazione virtuale il tuo server di posta può gestire migliaia di domini e utenti. Inoltre, è più facile da amministrare perché hai a che fare con il database MySQL solo quando aggiungi nuovi utenti/domini o modifichi quelli esistenti. Niente più comandi postmap per creare file db, niente più ricarica di Postfix, ecc. Per l'amministrazione del database MySQL puoi usare strumenti web based come phpMyAdmin che sarà installato anche in questo howto. Il terzo vantaggio è che gli utenti hanno un indirizzo e-mail come nome utente (invece di un nome utente + un indirizzo e-mail) che è più facile da capire e tenere a mente.

Questo howto vuole essere una guida pratica; non copre le basi teoriche. Sono trattati in molti altri documenti nel Web.

Questo documento viene fornito senza garanzie di alcun tipo! Voglio dire che questo non è l'unico modo per creare un sistema del genere. Ci sono molti modi per raggiungere questo obiettivo, ma questo è il modo in cui prendo. Non garantisco che questo funzionerà per te!

1 Nota preliminare

Questo tutorial è basato su Ubuntu 14.04 Server (Trusty Tahr), quindi dovresti configurare un'installazione di base del server Ubuntu 14.04 prima di continuare con questo tutorial. Il sistema dovrebbe avere un indirizzo IP statico. Uso 192.168.0.100 come indirizzo IP in questo tutorial e server1.example.com come nome host.

Assicurati di aver effettuato l'accesso come root (digita

sudo su

per diventare root), perché dobbiamo eseguire tutti i passaggi di questo tutorial come utente root.

È molto importante rendere /bin/sh un collegamento simbolico a /bin/bash...

trattino di riconfigurazione dpkg

Utilizzare dash come shell di sistema predefinita (/bin/sh)? <-- No

... e che disabiliti AppArmor, se stai ricevendo apparmor:servizio non riconosciuto, quindi rimuovilo da update-rc.d

servizio apparmor stop
update-rc.d -f apparmor remove
apt-get remove apparmor apparmor-utils

 

2 Installa Postfix, Courier, Saslauthd, MySQL, phpMyAdmin

Per installare Postfix, Courier, Saslauthd, MySQL e phpMyAdmin, eseguiamo semplicemente

apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server corriere-authdaemon corriere-authlib-mysql corriere-pop corriere-pop-ssl corriere-imap corriere-imap-ssl libsasl2-2 libsasl2-modules libsasl2-modules -sql sasl2-bin libpam-mysql openssl phpmyadmin apache2 libapache2-mod-php5 php5 php5-mysql libpam-smbpass

Ti verranno poste alcune domande:

Nuova password per l'utente "root" di MySQL:<-- yourrootsqlpassword
Ripetere la password per l'utente "root" di MySQL:<-- yourrootsqlpassword
Creare directory per l'amministrazione basata sul Web? <-- No
Tipo generale di configurazione della posta:<-- Sito Internet
Nome e-mail del sistema:<-- server1.example.com
Certificato SSL richiesto <-- Ok
Server Web da riconfigurare automaticamente:<-- apache2
Configura il database per phpmyadmin con dbconfig-common? <-- No

3 Applicare la patch di quota a Postfix

Dobbiamo ottenere i sorgenti di Postfix, correggerli con la quota patch, creare nuovi pacchetti Postfix .deb e installare quei pacchetti .deb:

apt-get build-dep postfix

Qualche volta puoi ricevere un errore come segue:-

[email protected]:~# apt-get build-dep postfix
Lettura degli elenchi dei pacchetti... Fine
Costruzione dell'albero delle dipendenze      
Lettura delle informazioni sullo stato... Fine
E:Tu deve inserire alcuni URI di "sorgente" nel tuo sources.list
[email protected]:~#

Puoi correggerlo come segue, aggiungendo i repository di origine:

vi /etc/apt/sources.list

Inserisci la voce come nel mio caso è

deb http://archive.ubuntu.com/ubuntu trusty universo con restrizioni principali
deb http://archive.ubuntu.com/ubuntu trusty-updates universo con restrizioni principali
deb http://security.ubuntu .com/ubuntu trusty-security universo limitato principale multiverso
deb http://archive.canonical.com/ubuntu partner fidato


deb-src http://archive. ubuntu.com/ubuntu trusty universo con restrizioni principali
deb-src http://archive.ubuntu.com/ubuntu trusty-updates universo con restrizioni principali
deb-src http://security.ubuntu.com/ ubuntu trusty-security principale universo limitato multiverso
deb-src http://archive.canonical.com/ubuntu trusty partner

Avanti

apt-get update
apt-get build-dep postfix

cd /usr/src
apt-get suffisso sorgente

(Assicurati di utilizzare la versione di Postfix corretta nei seguenti comandi. Ho installato Postfix 2.11.0. Puoi scoprire la tua versione di Postfix eseguendo

postconf -d | grep mail_version

L'output dovrebbe essere simile a questo:

[email protetta]:/usr/src# postconf -d | grep mail_version
mail_version =2.11.0
milter_macro_v =$mail_name $mail_version
[email protected]:/usr/src#


wget http://vda.sourceforge.net/VDA/postfix-vda-v13-2.10.0.patch
cd postfix-2.11.0
patch -p1 <../postfix-vda-v13 -2.10.0.patch

Quindi apri debian/rules e cambia DEB_BUILD_HARDENING da 1 a 0:

vi debian/regole

[...]
export DEB_BUILD_HARDENING=0
[...]

Se non lo fai, la tua build fallirà con i seguenti messaggi di errore:

maildir.c:nella funzione âdeliver_maildirâ:
maildir.c:974:17:errore:format not a string literal and no format arguments [-Werror=format-security]
maildir.c:977:17 :errore:formattare non una stringa letterale e nessun argomento di formato [-Werror=format-security]
maildir.c:983:17:errore:formattare non una stringa letterale e nessun argomento di formato [-Werror=format-security ]
maildir.c:986:17:errore:format non una stringa letterale e nessun argomento di formato [-Werror=format-security]
maildir.c:Nella funzione âsql2fileâ:
maildir. c:404:25:avviso:ignorando il valore di ritorno di âreadâ, dichiarato con l'attributo warn_unused_result [-Wunused-result]
maildir.c:417:26:avviso:ignorando il valore di ritorno di âwriteâ, dichiarato con l'attributo warn_unused_result [- Wunused-result]
cc1:alcuni avvisi vengono trattati come errori
make:*** [maildir.o] Errore 1
make:Leaving directory `/usr/src/postfix-2.11. 0/src/virtual'
make[1]:*** [aggiornamento] Errore 1
make[1]:Uscita dalla directory `/usr/src/postfi x-2.11.0'
make:*** [build] Errore 2
dpkg-buildpackage:errore:debian/rules build ha restituito lo stato di uscita dell'errore 2
[email protected]:/usr /src/postfix-2.11.0#

Ora possiamo creare i nuovi pacchetti .deb di Postfix:

pacchetto dpkg-build

Ora andiamo di una directory in alto, ecco dove sono stati creati i nuovi pacchetti .deb:

cd..

Il comando

ls -l

ti mostra i pacchetti disponibili:


[email protected]:/usr/src# ls -l
total 6824
drwxr-xr-x 18 root root    4096 Apr 30 04:28 postfix-2.11.0
-rw-r --r--  1 radice radice   46756 30 aprile 04:28 postfix-cdb_2.11.0-1_amd64.deb
-rw-r--r--  1 radice radice  142842 30 aprile 04:28 postfix-dev_2.11.0 -1_all.deb
-rw-r--r--  1 radice radice  851842 30 aprile 04:28 postfix-doc_2.11.0-1_all.deb
-rw-r--r--  1 radice root   53898 30 aprile 04:28 postfix-ldap_2.11.0-1_amd64.deb
-rw-r--r--  1 radice radice   48500 30 aprile 04:28 postfix-mysql_2.11.0-1_amd64.deb
-rw-r--r--  1 radice radice   48610 30 aprile 04:28 postfix-pcre_2.11.0-1_amd64.deb
-rw-r--r--  1 radice radice   48324 30 aprile 04:28 postfix-pgsql_2.11.0-1_amd64.deb
-rw-r--r--  1 radice radice   55701 7 giugno 2013 postfix-vda-v13-2.10.0.patch
-rw-r-- r--  1 radice radice  267855 30 aprile 04:27 postfix_2.11.0-1.diff.gz
-rw-r--r--  1 radice radice    1522 30 aprile 04:27 postfix_2.11.0-1.dsc
-rw-r--r--  1 radice radice    3885 30 aprile 04:28 postfix_2.11.0-1_amd64.changes
-rw-r --r--  1 radice radice 1329238 30 aprile 04:28 postfix_2.11.0-1_amd64.deb
-rw-r--r--  1 radice radice 4034741 feb 12 01:38 postfix_2.11.0.orig.tar .gz
[email protetta]:/usr/src# 

Scegli i pacchetti postfix e postfix-mysql e installali in questo modo:

dpkg -i postfix_2.11.0-1_amd64.deb postfix-mysql_2.11.0-1_amd64.deb

4 Creare il database MySQL per Postfix/Courier

Ora creiamo un database chiamato mail:

mysqladmin -u root -p crea posta

Ti verrà posta questa domanda:

Inserisci la password:<-- yourrootsqlpassword

Successivamente, andiamo alla shell MySQL:

mysql -u root -p

Sulla shell MySQL, creiamo l'utente mail_admin con la password mail_admin_password (sostituirla con la propria password) che ha i privilegi SELECT,INSERT,UPDATE,DELETE sul database di posta. Questo utente sarà utilizzato da Postfix e Courier per connettersi al database di posta:

GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* A 'mail_admin'@'localhost' IDENTIFICATO DA 'mail_admin_password';
GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost. localdomain' IDENTIFICATO DA 'mail_admin_password';
PRIVILEGI FLUSH;

Sempre sulla shell MySQL, creiamo le tabelle necessarie a Postfix e Courier:

UTILIZZA la posta;

domini CREATE TABLE (
dominio varchar(50) NOT NULL,
PRIMARY KEY (domain) )
ENGINE=MyISAM;

CREATE TABLE inoltri (
source varchar(80) NOT NULL,
destination TEXT NOT NULL,
PRIMARY KEY (source) )
ENGINE=MyISAM;

CREATE TABLE utenti (
email varchar(80) NOT NULL,
password varchar(20) NOT NULL,
quota INT(10) DEFAULT '10485760',
PRIMARY KEY (email )
) MOTORE=MyISAM;

CREATE TABLE trasporto (
dominio varchar(128) NOT NULL predefinito '',
trasporto varchar(128) NOT NULL predefinito '',
CHIAVE UNICA dominio (dominio)
) MOTORE =MyISAM;

esci;

Come avrai notato, con l'abbandono; comando abbiamo lasciato la shell MySQL e siamo tornati sulla shell Linux.

I domini la tabella memorizzerà ogni dominio virtuale per il quale Postfix dovrebbe ricevere e-mail (ad es. example.com ).

dominio
example.com

Gli inoltri tabella serve per alias un indirizzo e-mail a un altro, ad es. inoltra email per [email protetta] a [email protetta] .

fonte destinazione
[email protetta] [email protetta]

Gli utenti la tabella memorizza tutti gli utenti virtuali (ovvero gli indirizzi e-mail, perché l'indirizzo e-mail e il nome utente sono gli stessi) e le password (in crittografato form!) e un valore di quota per ciascuna casella di posta (in questo esempio il valore predefinito è 10485760 byte che significa 10 MB).

e-mail password quota
[email protetta] No9.E4skNvGa. ("segreto" in forma crittografata) 10485760

Il trasporto la tabella è facoltativa, è per utenti avanzati. Permette di inoltrare mail per singoli utenti, interi domini o tutte le mail ad un altro server. Ad esempio,

dominio trasporto
example.com smtp:[1.2.3.4]

inoltrerebbe tutte le email per example.com tramite il protocollo smtp al server con indirizzo IP 1.2.3.4 (le parentesi quadre [] significa "non effettuare una ricerca del record DNS MX" (che ha senso per gli indirizzi IP...). Se invece utilizzi un nome di dominio completo (FQDN), non utilizzeresti le parentesi quadre.).

A proposito, (suppongo che l'indirizzo IP del tuo sistema di server di posta sia 192.168.0.100) puoi accedere a phpMyAdmin su http://192.168.0.100/phpmyadmin/ in un browser e accedere come mail_admin. Quindi puoi dare un'occhiata al database. Successivamente puoi usare phpMyAdmin per amministrare il tuo server di posta.


Ubuntu
  1. Hosting virtuale con Proftpd e MySQL (quota inclusa) su Ubuntu 14.04LTS

  2. Installazione di Lighttpd con PHP5 (PHP-FPM) e supporto MySQL su Ubuntu 14.04LTS

  3. Utenti e domini virtuali con Postfix, Courier, MySQL e SquirrelMail (Ubuntu 13.10)

  4. Utenti e domini virtuali con Sendmail

  5. Mailserver con utenti e domini virtuali che utilizzano Postfix e Dovecot su CentOS 6 VPS

Hosting virtuale con vsftpd e MySQL su Ubuntu 12.10

Hosting virtuale con Proftpd e MySQL (quota inclusa) su Ubuntu 12.10

Hosting virtuale con PureFTPd e MySQL (incl. quota e gestione della larghezza di banda) su Ubuntu 14.04LTS

Utenti virtuali e domini con Postfix, Courier, MySQL e SquirrelMail (Debian Wheezy)

Utenti e domini virtuali con Postfix, Courier, MySQL e SquirrelMail (CentOS 6.3 x86_64)

Utenti virtuali e domini con Postfix, Courier, MySQL e SquirrelMail (Fedora 18 x86_64)