lunes, 1 de marzo de 2010

Tutorial: Como instalar un completo servidor de correo con Ubuntu Intrepid Ibex Parte V

Continuando con la quinta parte de nuestro tutorial, añadiremos soporte para smtp-auth a nuestra configuración con motivo de evitar el spam.

El primer paso es instalar el paquete libpam-mysql:

sudo apt-get instal libpam-mysql

Luego crearemos el siguiente fichero con ciertos parámetros:

sudo nano /etc/pam.d/smtp

El contenido del fichero será el siguiente:

auth required pam_permit.so pam_mysql.so
host=127.0.0.1
db=postfix
user=postfix
passwd=mi_pass
table=mailbox
usercolumn=username
passwdcolumn=password
crypt=y


Una vez hecho esto, instalamos los paquetes que se encargarán de hacer la autenticación por medio de pam.

sudo apt-get  install libsasl2 libsasl2-modules libsasl2-modules-sql sasl2-bin

Creamos el directorio en el que ira el pid del saslauth

sudo mkdir -p /var/spool/postfix/var/run/saslauthd

Luego guardamos el fichero de configuración  /etc/default/saslauthd con otro nombre y creamos uno nuevo de la siguiente forma:

sudo nano  /etc/default/saslauthd

Y lo dejamos únicamente con este texto:


START=yes
MECHANISMS="pam"
OPTIONS="-m /var/spool/postfix/var/run/saslauthd -r"


Modificaremos el archivo /etc/init.d/saslauthd

sudo nano /etc/init.d/saslauthd

y cambiaremos la linea PIDFILE por la siguiente;


PIDFILE="/var/spool/postfix/var/run/${NAME}/saslauthd.pid"

Como siguiente paso, crearemos el fichero de configuración para el servidor smtp.

sudo nano  /etc/postfix/sasl/smtpd.conf

con el siguiente contenido:

pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
allow_plaintext: true
auxprop_plugin: sql
sql_verbose: yes
sql_engine: mysql
sql_hostnames: 127.0.0.1:
sql_user: postfix
sql_passwd: mi_pass
sql_database: postfix
sql_select: select password from mailbox where username = '%u@%r'


y añadiremos las siguiente líneas al fichero main.cf para que los usuarios deban autenticarse para enviar correo:

smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions =
permit_sasl_authenticated,reject_unauth_destination
smtpd_tls_auth_only = no
smtpd_use_tls = yes
smtp_use_tls=yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file=/etc/postfix/ssl/smtpd.key
smtpd_tls_cert_file=/etc/postfix/ssl/smtpd.crt
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem
smtpd_tls_received_header = yes
tls_random_source = dev:/dev/urandom
smtpd_sasl_exceptions_networks = $mynetworks
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth


Crearemos los certificados y la llave para smtp:

mkdir /etc/postfix/ssl
cd /etc/postfix/ssl/
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024
chmod 600 smtpd.key
openssl req -new -key smtpd.key -out smtpd.csr
openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
openssl rsa -in smtpd.key -out smtpd.key.unencrypted
mv -f smtpd.key.unencrypted smtpd.key
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650


finalmente reiniciamos postfix e intentamos enviar un correo para verificar que se necesita usuario y password para hacerlo.

No hay comentarios: