GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Usuarios virtuales y dominios con Postfix, Courier, MySQL y SquirrelMail (Ubuntu 14.04LTS)

Este tutorial tiene Copyright (c) 2014 de Falko Timme y Srijan Kishore. Se deriva de un tutorial de Christoph Haas que puede encontrar en http://workaround.org. Puede usar este tutorial bajo la licencia Creative Commons 2.5 o cualquier versión posterior.

Este documento describe cómo instalar un servidor de correo Postfix basado en usuarios y dominios virtuales, es decir, usuarios y dominios que se encuentran en una base de datos MySQL. También demostraré la instalación y configuración de Courier (Courier-POP3, Courier-IMAP), para que Courier pueda autenticarse contra la misma base de datos MySQL que usa Postfix.

El servidor Postfix resultante es capaz de SMTP-AUTH y TLS y cuota (La cuota no está integrada en Postfix de forma predeterminada, le mostraré cómo parchear su Postfix de manera adecuada). Las contraseñas se almacenan en encriptadas formulario en la base de datos (la mayoría de los documentos que encontré trataban con contraseñas de texto sin formato, lo que es un riesgo de seguridad). Además de eso, este tutorial cubre la instalación de Amavisd , Asesino de spam y ClamAV para que los correos electrónicos sean escaneados en busca de spam y virus. También mostraré cómo instalar SquirrelMail como una interfaz de correo web para que los usuarios puedan leer y enviar correos electrónicos y cambiar sus contraseñas.

La ventaja de una configuración "virtual" de este tipo (usuarios y dominios virtuales en una base de datos MySQL) es que tiene mucho más rendimiento que una configuración basada en usuarios "reales" del sistema. Con esta configuración virtual, su servidor de correo puede manejar miles de dominios y usuarios. Además, es más fácil de administrar porque solo tiene que lidiar con la base de datos MySQL cuando agrega nuevos usuarios/dominios o edita los existentes. No más comandos postmap para crear archivos db, no más recargas de Postfix, etc. Para la administración de la base de datos MySQL, puede usar herramientas basadas en web como phpMyAdmin, que también se instalará en este tutorial. La tercera ventaja es que los usuarios tienen una dirección de correo electrónico como nombre de usuario (en lugar de un nombre de usuario + una dirección de correo electrónico) que es más fácil de entender y tener en cuenta.

Este howto pretende ser una guía práctica; no cubre los antecedentes teóricos. Se tratan en muchos otros documentos en la web.

¡Este documento viene sin garantía de ningún tipo! Quiero decir que esta no es la única forma de establecer un sistema de este tipo. Hay muchas maneras de lograr este objetivo, pero este es el camino que tomo. ¡No emito ninguna garantía de que esto funcione para usted!

1 nota preliminar

Este tutorial se basa en el servidor Ubuntu 14.04 (Trusty Tahr), por lo que debe configurar una instalación básica del servidor Ubuntu 14.04 antes de continuar con este tutorial. El sistema debe tener una dirección IP estática. Uso 192.168.0.100 como mi dirección IP en este tutorial y server1.example.com como nombre de host.

Asegúrese de haber iniciado sesión como raíz (escriba

sudo su

para convertirse en root), porque debemos ejecutar todos los pasos de este tutorial como usuario root.

Es muy importante que haga de /bin/sh un enlace simbólico a /bin/bash...

guión dpkg-reconfigure

¿Usar guión como shell del sistema predeterminado (/bin/sh)? <-- No

... y que deshabilite AppArmor, si recibe apparmor:servicio no reconocido, elimínelo de update-rc.d

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

 

2 Instale Postfix, Courier, Saslauthd, MySQL, phpMyAdmin

Para instalar Postfix, Courier, Saslauthd, MySQL y phpMyAdmin, simplemente ejecutamos

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

Se le harán algunas preguntas:

Nueva contraseña para el usuario "root" de MySQL:<-- yourrootsqlpassword
Repetir la contraseña para el usuario "root" de MySQL:<-- yourrootsqlpassword
¿Crear directorios para administración basada en web? <-- No
Tipo general de configuración de correo:<-- Sitio de Internet
Nombre de correo del sistema:<-- server1.example.com
Certificado SSL requerido <-- Ok
Servidor web para reconfigurar automáticamente:<-- apache2
¿Configurar base de datos para phpmyadmin con dbconfig-common? <-- No

3 Aplicar el parche de cuota a Postfix

Tenemos que obtener las fuentes de Postfix, parchearlo con el parche de cuota, crear nuevos paquetes .deb de Postfix e instalar esos paquetes .deb:

postfijo apt-get build-dep

En algún momento puede obtener un error de la siguiente manera:-

[email protected]:~# apt-get build-dep postfix
Leyendo listas de paquetes... Listo
Creando árbol de dependencias      
Leyendo información de estado... Listo
E:Tú debe poner algunos URI de 'fuente' en su source.list
[email protected]:~#

Puede corregirlo de la siguiente manera, agregando los repositorios de origen:

vi /etc/apt/sources.list

Hacer la entrada como en mi caso es

deb http://archive.ubuntu.com/ubuntu trusty principal universo restringido
deb http://archive.ubuntu.com/ubuntu trusty-updates principal universo restringido
deb http://security.ubuntu .com/ubuntu trusty-security principal universo restringido multiverso
deb http://archive.canonical.com/ubuntu trusty partner


deb-src http://archive. ubuntu.com/ubuntu trusty principal universo restringido
deb-src http://archive.ubuntu.com/ubuntu trusty-updates principal universo restringido
deb-src http://security.ubuntu.com/ ubuntu trusty-security principal universo restringido multiverso
deb-src http://archive.canonical.com/ubuntu trusty partner

Siguiente

apt-get update
apt-get build-dep postfix

cd /usr/src
apt-get source postfix

(Asegúrese de usar la versión correcta de Postfix en los siguientes comandos. Tengo instalado Postfix 2.11.0. Puede encontrar su versión de Postfix ejecutando

posconf -d | grep mail_version

La salida debería verse así:

[correo electrónico protegido]:/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
parche -p1 <../postfix-vda-v13 -2.10.0.parche

A continuación, abra debian/rules y cambie DEB_BUILD_HARDENING de 1 a 0:

vi debian/reglas

Si no hace esto, su compilación fallará con los siguientes mensajes de error:

maildir.c:en la función âdeliver_maildirâ:
maildir.c:974:17:error:el formato no es una cadena literal ni argumentos de formato [-Werror=format-security]
maildir.c:977:17 :error:el formato no es una cadena literal ni argumentos de formato [-Werror=formato-seguridad]
maildir.c:983:17:error:el formato no es una cadena literal ni argumentos de formato [-Werror=formato-seguridad] ]
maildir.c:986:17:error:el formato no es una cadena literal ni argumentos de formato [-Werror=format-security]
maildir.c:en la función âsql2fileâ:
maildir. c:404:25:advertencia:ignorando el valor de retorno de âreadâ, declarado con el atributo warn_unused_result [-Wunused-result]
maildir.c:417:26:advertencia:ignorando el valor de retorno de âwriteâ, declarado con el atributo warn_unused_result [- Wunused-result]
cc1:algunas advertencias se tratan como errores
make:*** [maildir.o] Error 1
make:Dejando el directorio `/usr/src/postfix-2.11. 0/src/virtual'
make[1]:*** [actualización] Error 1
make[1]:Dejando el directorio `/usr/src/postfi x-2.11.0'
make:*** [compilación] Error 2
dpkg-buildpackage:error:la compilación de debian/rules dio el estado de salida de error 2
[email protected]:/usr /src/postfix-2.11.0#

Ahora podemos construir los nuevos paquetes Postfix .deb:

dpkg-construir paquete

Ahora subimos un directorio, ahí es donde se han creado los nuevos paquetes .deb:

CD ..

El comando

ls-l

te muestra los paquetes disponibles:


[email protected]:/usr/src# ls -l
total 6824
drwxr-xr-x 18 root root    4096 30 de abril 04:28 postfix-2.11.0
-rw-r --r--  1 raíz raíz   46756 30 de abril 04:28 postfix-cdb_2.11.0-1_amd64.deb
-rw-r--r--  1 raíz raíz  142842 30 de abril 04:28 postfix-dev_2.11.0 -1_all.deb
-rw-r--r--  1 raíz raíz  851842 30 de abril 04:28 postfix-doc_2.11.0-1_all.deb
-rw-r--r--  1 raíz root   53898 30 de abril 04:28 postfix-ldap_2.11.0-1_amd64.deb
-rw-r--r--  1 root root   48500 30 de abril 04:28 postfix-mysql_2.11.0-1_amd64.deb
-rw-r--r--  1 raíz raíz   48610 30 de abril 04:28 postfix-pcre_2.11.0-1_amd64.deb
-rw-r--r--  1 raíz raíz   48324 30 de abril 04:28 postfix-pgsql_2.11.0-1_amd64.deb
-rw-r--r--  1 raíz raíz   55701 7 de junio  de 2013 postfix-vda-v13-2.10.0.patch
-rw-r-- r--  1 raíz raíz  267855 30 de abril 04:27 postfix_2.11.0-1.diff.gz
-rw-r--r--  1 raíz raíz    1522 30 de abril 04:27 postfix_2.11.0-1.dsc
-rw-r--r--  1 raíz raíz    3885 30 de abril 04:28 postfix_2.11.0-1_amd64.changes
-rw-r --r--  1 raíz raíz 1329238 30 de abril 04:28 postfix_2.11.0-1_amd64.deb
-rw-r--r--  1 raíz raíz 4034741 12 de febrero 01:38 postfix_2.11.0.orig.tar .gz
[correo electrónico protegido]:/usr/src# 

Elija los paquetes postfix y postfix-mysql e instálelos así:

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

4 Crea la base de datos MySQL para Postfix/Courier

Ahora creamos una base de datos llamada correo:

mysqladmin -u root -p crear correo

Se le pedirá esta pregunta:

Introduzca la contraseña:<-- yourrootsqlpassword

A continuación, vamos al shell de MySQL:

mysql -u raíz -p

En el shell de MySQL, creamos el usuario mail_admin con la contraseña mail_admin_password (reemplácela con su propia contraseña) que tiene privilegios SELECCIONAR, INSERTAR, ACTUALIZAR, ELIMINAR en la base de datos de correo. Este usuario será utilizado por Postfix y Courier para conectarse a la base de datos de correo:

CONCEDER SELECCIONAR, INSERTAR, ACTUALIZAR, ELIMINAR EN EL CORREO.* A 'mail_admin'@'localhost' IDENTIFICADO POR 'mail_admin_password';
CONCEDER SELECCIONAR, INSERTAR, ACTUALIZAR, ELIMINAR EN EL CORREO.* A 'mail_admin'@'localhost. localdomain' IDENTIFICADO POR 'mail_admin_password';
PRIVILEGIOS DE DESCARGA;

Todavía en el shell de MySQL, creamos las tablas que necesitan Postfix y Courier:

USAR correo;

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

Reenvíos CREATE TABLE (
origen varchar(80) NOT NULL,
destino TEXT NOT NULL,
PRIMARY KEY (origen) )
ENGINE=MyISAM;

CREATE TABLE usuarios (
email varchar(80) NOT NULL,
password varchar(20) NOT NULL,
quota INT(10) DEFAULT '10485760',
CLAVE PRIMARIA (email )
) MOTOR=MiISAM;

CREATE TABLE transport (
dominio varchar(128) NOT NULL predeterminado '',
transport varchar(128) NOT NULL predeterminado '',
CLAVE ÚNICA dominio (dominio)
) MOTOR =MiISAM;

salir;

Como habrás notado, con la renuncia; hemos dejado el shell de MySQL y estamos de vuelta en el shell de Linux.

Los dominios la tabla almacenará cada dominio virtual para el que Postfix debería recibir correos electrónicos (por ejemplo, example.com ).

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

Los reenvíos la tabla es para crear un alias de una dirección de correo electrónico a otra, p. reenviar correos electrónicos para [email protected] a [email protected] .

dominio
ejemplo.com

Los usuarios La tabla almacena todos los usuarios virtuales (es decir, las direcciones de correo electrónico, porque la dirección de correo electrónico y el nombre de usuario son los mismos) y las contraseñas (en formato cifrado). form!) y un valor de cuota para cada casilla de correo (en este ejemplo, el valor predeterminado es 10485760 bytes, lo que significa 10 MB).

fuente destino
[correo electrónico protegido] [correo electrónico protegido]

El transporte La tabla es opcional, es para usuarios avanzados. Permite reenviar correos para usuarios individuales, dominios completos o todos los correos a otro servidor. Por ejemplo,

correo electrónico contraseña cuota
[correo electrónico protegido] No9.E4skNvGa. ("secreto" en forma encriptada) 10485760

reenviaría todos los correos electrónicos para example.com a través del protocolo smtp al servidor con la dirección IP 1.2.3.4 (los corchetes [] significa "no realizar una búsqueda del registro MX DNS" (lo que tiene sentido para las direcciones IP...). Si usa un nombre de dominio completo (FQDN) en su lugar, no usaría los corchetes).

Por cierto, (supongo que la dirección IP de su sistema de servidor de correo es 192.168.0.100) puede acceder a phpMyAdmin en http://192.168.0.100/phpmyadmin/ en un navegador e iniciar sesión como mail_admin. A continuación, puede echar un vistazo a la base de datos. Más tarde puede usar phpMyAdmin para administrar su servidor de correo.


Ubuntu
  1. Alojamiento virtual con Proftpd y MySQL (incluida la cuota) en Ubuntu 14.04LTS

  2. Instalación de Lighttpd con soporte PHP5 (PHP-FPM) y MySQL en Ubuntu 14.04LTS

  3. Usuarios virtuales y dominios con Postfix, Courier, MySQL y SquirrelMail (Ubuntu 13.10)

  4. Usuarios virtuales y dominios con Sendmail

  5. Servidor de correo con usuarios y dominios virtuales usando Postfix y Dovecot en un CentOS 6 VPS

Alojamiento virtual con vsftpd y MySQL en Ubuntu 12.10

Alojamiento virtual con Proftpd y MySQL (incluida la cuota) en Ubuntu 12.10

Alojamiento virtual con PureFTPd y MySQL (incluida la gestión de cuotas y ancho de banda) en Ubuntu 14.04LTS

Usuarios virtuales y dominios con Postfix, Courier, MySQL y SquirrelMail (Debian Wheezy)

Usuarios virtuales y dominios con Postfix, Courier, MySQL y SquirrelMail (CentOS 6.3 x86_64)

Usuarios virtuales y dominios con Postfix, Courier, MySQL y SquirrelMail (Fedora 18 x86_64)

    dominio transporte
    ejemplo.com smtp:[1.2.3.4]