You are on page 1of 17

http://www.loquefaltaba.com/documentacion/servermail.

html

Vamos a hacer una introduccin a como configurar Sendmail como servidor de correo bajo FreeBSD. El objetivo es conseguir configurar un servidor de correo electrnico para nuestra red, ya sea domstica o corporativa. Para ello necesitamos un servidor SMTP para el cual usaremos Sendmail que es el que trae por defecto Freebsd y un servidor POP3, para el cual pondr dos opciones, una el popd y la otra el Qpopper.

Instalacin de Qpopper

Primero instalamos el Qpopper haciendo lo siguiente:


server# cd /usr/ports/mail/qpopper && make install clean

Una vez instalado el Qpopper editaremos el archivo /etc/inetd.conf para configurar el inicio del servidor pop3.
server# vi /etc/inetd.conf

Una vez dentro buscaremos la lnea:


#pop3 stream tcp nowait root /usr/local/libexec/popper popper

Sustituyndola por:
pop3 stream tcp nowait root /usr/local/libexec/qpopper qpopper

Ahora reiniciamos el inetd para que empiece a funcionar el Qpopper. server# killall -HUP inetd Si no nos gusta usar el inetd para iniciar servicios, podemos poner la siguiente lnea en el archivo /etc/rc.local /usr/local/libexec/qpopper #Servidor pop3

Instalacin de popd

Primero Instalamos popd

server# cd /usr/ports/mail/popd && make install clean

Una vez instalado el popd editaremos el archivo/etc/inetd.conf para configurar el inicio del servidor pop3.
server# vi /etc/inetd.conf

Una vez dentro buscamos la lnea:


#pop3 stream tcp nowait root /usr/local/libexec/popper popper

Sustituyndola por:
pop3 stream tcp nowait root /usrlocal/libexec/popd popd

Ahora reiniciamos el inetd : server# killall -HUP inetd Si lo preferimos evitamos el archivo /etc/rc.local poniendo la siguiente lnea: /usr/local/libexec/popd

Configuracin de Sendmail
Suponemos que el Sendmail va a permitir a nuestra red mandar correo y soportar las direcciones nombre.apellido@mi.dominio.com Lo primero es ver si tenemos configurado el sendmail para que inicie cuando el servidor se inicia, para comprobarlo miraremos si el fichero /etc/rc.conf contiene la siguiente lnea: sendmail_enable="YES" Si no est de esta manera, la ponemos.

Para permitir que nuestra red enve correo y el servidor no le d error necesitaremos editar el archivo /etc/mail/access , seguramente no tengamos dicho archivo, por lo cual haremos lo siguiente:
server# cd /etc/mail server# mv access.sample access server# chmod 644 access

Ya tenemos el archivo, ahora tenemos que modificarlo a nuestro gusto.


server# vi access

El formato de este archivo es el siguiente:


#$FreeBSD: /src/etc/mail/access 1.1.2.2 2000/11/03 07:23:50 dirk Exp $ # #Mail relay access control list. Default is to reject mail unless the #destination is local, or listed in /etc/mail/local-host-names # spammers.com 550 We don't accept mail from spammers spam@ REJECT 10.0.0 RELAY #Permitimos las ips de mi red mi.dominio.com RELAY #Permitimos nuestro Dominio

Una vez editado a nuesto gusto slo nos queda hacer el archivo binario para que Sendmail funcione con los cambios realizados:
server #makemap hash /etc/mail/access < /etc/mail/access

Ya slo nos queda dar de alta las cuentas de correo.

Primero damos de alta al usuario en el servidor, como no permite nombres de usuario con nombre.apellido damos de alta un usuario normal, por ejemplo Jose. Si el usuario slo va a tener que acceder al correo le ponemos la shell como /nonexistent. Una vez dados de alta los usuarios vamos a emplear los usuarios virtuales para poder utilizar las direcciones de correo con nombre.apellido, para lo cual creamos y editamos el archivo/etc/mail/virtusertable

server# touch virtusertable server# chmod 644 virtusertable server# vi virtusertable jose.salcedo@mi.dominio.com juan.valiente@mi.dominio.com maria.vilches@mi.dominio.com maria jose juan

El formato de este archivo es el siguiente:


Ya slo queda hacer el archivo binario para que Sendmail funcione con los cambios realizados.

server# makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable

Autentificacin en Sendmail
La Autentificacin en el sendmail nos aporta un nivel mas de seguridad a nuestro sistema de correo, a demas de permitirnos el relay a usuarios con conexiones RTB o ADSL que cambian de IP con cada conexin.

Lo primero que vamos a necesitar es tener el cdigo del el sistema base actualizado, si no sabes como hacerlo mirate este documento.La razn de tener el cdigo del sistema actualizado es para eliminar bug en el sendmail y por que vamos a necesitarlo para incluir el sistema de autentificacin en el sendmail.

Una vez que tenemos el cdigo del sistema actualizado necesitamos instalar el port security/cyrus-sasl Para ello procedemos de la siguiente manera:
server# cd /usr/ports/security/cyrus-sasl && make install clean

Una vez que ya tenemos instalado el port security/cyrus-sasl procedemos a modificar, o crear si no lo tenemos, el archivo /usr/local/lib/sasl/Sendmail.conf e introducir lo siguiente:
pwcheck_method: passwd

Ahora necesitamos modificar el archivo /etc/make.conf y aadir las siguientes lneas:


SENDMAIL_CFLAGS=-I/usr/local/include/sasl1 DSASL SENDMAIL_LDFLAGS=-L/usr/local/lib SENDMAIL_LDADD=-lsasl

Estas lneas hacen que sendmail coja la configuracin correcta para usar cyrus-sasl a la hora de compilar.

Vamos a recompilar Sendmail:


server# server# server# server# server#

cd /usr/src/usr.sbin/sendmail make cleandir make obj make make install

Despues de compilar el Sendmail y reinstalado, nos queda editar el archivo /etc/mail/freebsd.mc e incluir estas lneas:

dnl set SASL options TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl define(`confDEF_AUTH_INFO', `/etc/mail/authinfo')dnl

Estas opciones configuran nuestro sendmail para la autentificacin de usuarios.

Finalmente solo nos queda ejecutar make en /etc/mail. Esto nos ejecutar nuestro .mc y nos generar nuestro archivo de configuraci llamado freebsd.cf, este lo debemos copiar a sendmail.cf y reiniciar el sendmail para que todo funcione.

server# cd /etc/mail && make server# cp freebsd.cf sendmail.cf server# killall -HUP sendmail

Si todo ha funcionado correctamente ya tenemos funcionando nuestro sendmail con autentificacin de usuarios. Bueno, pues con esto ya tenemos configurado y funcionando en nuestra red Sendmail. Espero que este documento haya servido para que ms de una persona pueda configurar un servidor de correo en su red. Buena Suerte.

"No intentes hacerlo, Hazlo o no lo hagas, pero no lo intentes"

Mas info

http://www.freebsd.org/doc/en/books/handbook/mail.html http://rmontoyau.blogspot.mx/2009/02/servidor-de-correo-freebsd.html

OTRO TUTO

Servidor de Correo Freebsd


La instalacin de un servidor de correo en FreeBSD requiere de la instalacin y configuracin de varios puertos o programas. Adems de tener configurado un servidor de pginas web que de soporte a aplicaciones con php. En primer lugar se debe contar con directorio donde se instalara el servidor, adems de almacenar el contenido de las cuentas as como la base de datos. En este caso se utilizara el directorio /usr/data/ En segundo lugar se deben instalar y configurar los siguientes puertos o aplicaciones. Mysql50-server Ubicado en /usr/ports/databases/mysql41-server make install clean clean-depends Instalar la base de datso en el directorio elejido mysql_install_db --user=mysql --datadir=/usr/data/mysql Se crea un usuario que maneje la base de datos. mysqld_safe --user=mysql --datadir=/usr/data/mysql & Se asignan contraseas mysqladmin -u root password mysqladmin -u root shutdown -p Se inicializa el servidor
/usr/local/etc/rc.d/mysql-server.sh start

Courier-IMAP: Ubicado en /usr/ports/mail/courier-imap.

Se le debe dar soporte a TRASHQUOTA por lo que se debe seleccionar antes de comenzar la instalacin. O se escribe make WITH_TRASHQUOTA=yes install clean clean-depends Courier-AUTHLIB: Ubicado en /usr/ports/security/courier-authlib. Se debe dar soporte a Mysql, as que en el men que aparece se debe seleccionar auth_mysql y luego ejecutar
make install clean clean-depends Cyrus-SASL2:

Ubicado en /usr/ports/security/cyrus-sasl2 Antes de compilar la aplicacin se debe ir a la carpeta /files y desargar los siguientes archivos fetch http://frost.ath.cx/software/cyrus-sasl-patches/dist/2.1.19/freebsd/patch-lib::Makefile.in
fetch http://frost.ath.cx/software/cyrus-sasl-patches/dist/2.1.19/freebsd/patch-lib::checkpw.c fetch http://frost.ath.cx/software/cyrus-sasl-patches/dist/2.1.19/freebsd/patch-plugins::sql.c

Luego se regresa al directorio anterior se debe dar soporte a mysql y por lo que se ejecuta,
make WITH_MYSQL=yes install clean clean-depends

PostfixAdmin
Se ubica en :

/usr/ports/mail/postfixadmin make install clean clean-depends Postfix

Se ubica en: /usr/ports/mail/postfix make install clean clean-depends

En el cuadro que aparece se deben seleccionar los siguientes puertos SASL2, MYSQL, TLS,VDA, PCRE y TEST, adems preguntara si desea agregar al usuario postfix al grupo mail, se deme indicar que si (y), adems preguntara si quiere que habilite el archivo /etc/mail/Mailer.conf se debe indicar que si(y) Instalar la base de datos de postfixadmin Primero se debe crear el script de para crear la base de datos, por lo cual se debe ejecutar
cp /usr/local/www/postfixadmin/DATABASE_MYSQL.TXT /root/postfixmysql.sql

y con la siguiente lnea se corre y se instala la base de datos en mysql. mysql -u root -p < /root/postfix-mysql.sql Para comprobar que se instalo correctamente la base de datos puede digitar mysql -u postfix p postfix postfix mysql> show tables; Si aparecen las siguientes tablas es que se instalado correctamente
| Tables_in_postfix | +-------------------+ | admin | | alias | | domain | | domain_admins | | log | | mailbox | | vacation | +-------------------+ 7 rows in set (0.00 sec)

Configuracin del Courier_Imap


Se debe ubicar en el directorio. /usr/local/etc/courier-imap Como existen algunos archivos que tienen extensiones .dist, se deben copiar quitndoles dicha extension. ejecutando ls | awk '{system("cat " $0 " > `echo " $0 "|sed s/.dist//`")}

Ahora se edita el archivo imapd.cnf para modificar la informacin en la seccin [ req_dn ] para la generacin del certificado para las conexiones seguras: [ req_dn ] C=CR
ST=SJ L=SanJose O=Test Mail Server OU=Automatically-generated CN=localhost emailAddress=postmaster@proyecto1.org

IMAP

SSL key

Se realiza el mismo procedimiento con el archivo pop3d.cnf:


[ req_dn ] C=CR ST=SJ L=SanJose O=Test Mail Server OU=Automatically-generated POP3 SSL key CN=localhost emailAddress=postmaster@proyecto1.org

Seguidamente se realizan los certificados de seguridad ejecutando


/usr/local/share/courier-imap/mkpop3dcert /usr/local/share/courier-imap/mkimapdcert

Se respalda el archivo de configuracin de courier-authlib por motivos de seguridad mv /usr/local/etc/authlib/authmysqlrc /usr/local/etc/authlib/authmysqlrc.default touch /usr/local/etc/authlib/authmysqlrc Ahora se debe ubicar en el directorio /usr/local/etc/authlib/ para modificar el archivo authdaemonrc cambiando la siguiente lnea
authmodulelist="authuserdb authvchkpw authpam authldap authmysql authpgsql"

La cual debe quedar de la siguiente forma

authmodulelist="authuserdb authvchkpw authpam authldap authmysql"

En el mismo directorio se encuentra el archivo authmysqlrc el cual debe contener la siguiente informacin
# SERVIDOR MySQL MYSQL_SERVER localhost # USUARIO MySQL MYSQL_USERNAME postfix # CONTRASEA MySQL MYSQL_PASSWORD postfix # BASE DE DATOS MySQL MYSQL_DATABASE postfix # TABLA DONDE HAREMOS LOS CHEQUEOS MYSQL_USER_TABLE mailbox # USUARIO QUE MANEJARA EL CORREO (postfix) MYSQL_UID_FIELD '125' # GRUPO QUE MANEJARA EL CORREO (maildrop) MYSQL_GID_FIELD '126' # CAMPO UTILIZADO PARA EL LOGIN MYSQL_LOGIN_FIELD username # CAMPO UTILIZADO PARA VERIFICAR LA CONTRASEA MYSQL_CRYPT_PWFIELD password # DIRECTORIO DONDE RESIDEN LOS DOMINIOS VIRTUALES MYSQL_HOME_FIELD '/usr/data/postfix/virtual' # CAMPO CONTENEDOR DEL NOMBRE DEL USUARIO MYSQL_NAME_FIELD name # CAMPO CONTENEDOR DE LA RUTA HACIA EL DIRECTORIO DEL USUARIO MYSQL_MAILDIR_FIELD maildir # Campo de la tabla mailbox que indica la quota o tamao maximo de almacenamiento de los buzones de correo MYSQL_QUOTA_FIELD quota # Condicion que se utilizara en la sentencia WHERE de la consulta a la tabla mailbox MYSQL_WHERE_CLAUSE active=1

Seguido se inician los demonios pop3 y imap


sh /usr/local/libexec/courier-imap/imapd.rc start sh /usr/local/libexec/courier-imap/pop3d.rc start USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS root couriertcp 73558 5 tcp4 *:110

*:* root couriertcp 73551 5 tcp4 *:143 *:* Se puede confirmar que se estn ejecutando mediante el comando sockstat -4, si aparece la siguiente informacin, es porque se estn ejecutando correctamente sh /usr/local/libexec/courier-imap/imapd-ssl.rc start sh /usr/local/libexec/courier-imap/pop3d-ssl.rc start Si se desea conexiones seguras tambin se pueden iniciar los demonios con soporte ssl: (puntos extra) USER root root COMMAND PID FD PROTO couriertcp 73572 5 tcp4 couriertcp 73566 5 tcp4 LOCAL ADDRESS *:995 *:993 FOREIGN ADDRESS *:* *:*

Se puede confirmar que se estn ejecutando mediante el comando sockstat -4, si aparece la siguiente informacin, es porque se estn ejecutando correctamente Configuracin de Cyrus-SASL2 Se debe desplazar al siguiente directorio /usr/local/lib/sasl2/ y se debe de crear un archivo con el nombre smtpd.conf que debe contener

# Metodo de verificacion de password pwcheck_method: auxprop # Utilizar metodos plain y login por los clientes mech_list: plain login # Especifica en sql_engine que usaremos mysql para las autentificaciones sql_engine: mysql # Plugin de autentificacion que usaremos auxprop_plugin: sql # Cifrado usado para la autentificacion srp_mda: md5 # Formato de password con el que trabajaremos gracias al parche aplicado password_format: crypt # hostname del servidor MySQL sql_hostnames: localhost # Usuario para acceder a las tablas de MySQL usadas por nuestro servidor de correo sql_user: postfix # Password del usuario de MySQL sql_passwd: postfix # Base de datos a usar sql_database: postfix # SQL a utilizar para obtener el password del usuario autentificar sql_select: select password from mailbox where username = '%u@%r'

Configurar Postfix Se deben de crear siguientes archivos en /usr/local/etc/postfix/ que sern los que hagan los querys a la BD en MySQL:
user = postfix password = postfix hosts = localhost dbname = postfix table = domain select_field = domain where_field = domain additional_conditions = and backupmx = '1' mysql_relay_domains_maps.cf mysql_virtual_alias.cf

user = postfix password = postfix hosts = localhost dbname = postfix query = SELECT goto FROM alias WHERE address='%s'

mysql_virtual_alia s_maps.cf

mysql_virtual_do mains_maps.cf

user = postfix password = postfix hosts = localhost dbname = postfix table = alias select_field = goto where_field = address

mysql_virtual_mai lbox_limit_maps.cf mysql_virtual_mailbox_map s.cf Se deben modificar los siguientes variables en el archivo main.cf

user = postfix password = postfix hosts = localhost dbname = postfix table = domain select_field = domain where_field = domain

Adems se deben agregar lo siguiente al final del archivo main.cf

user = postfix password = postfix hosts = localhost dbname = postfix table = mailbox select_field = maildir where_field = username

user = postfix password = postfix hosts = localhost dbname = postfix table = mailbox select_field = maildir where_field = username

myhostname = proyectoredes.proyecto1.org mydomain = dyndns.org myorigin = $mydomain mydestination = $mydomain, $transport_maps local_recipient_maps =

alias_database = hash:/etc/mail/aliases alias_maps = hash:/etc/mail/aliases # Configuracion para PostfixAdmin virtual_alias_maps = mysql:/usr/local/etc/postfix/mysql_virtual_alias_maps.cf virtual_gid_maps = static:126 virtual_mailbox_base = /usr/data/postfix/virtual virtual_mailbox_domains = mysql:/usr/local/etc/postfix/mysql_virtual_domains_maps.cf virtual_mailbox_limit = 51200000 virtual_mailbox_maps = mysql:/usr/local/etc/postfix/mysql_virtual_mailbox_maps.cf virtual_minimum_uid = 125 virtual_transport = virtual virtual_uid_maps = static:125 # Soporte para Quotas virtual_create_maildirsize = yes virtual_mailbox_extended = yes virtual_mailbox_limit_maps = mysql:/usr/local/etc/postfix/mysql_virtual_mailbox_limit_maps.cf virtual_mailbox_limit_override = yes virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please try again later. virtual_overquota_bounce = yes # Guardar los backup mx domains en mysql relay_domains = proxy:mysql:/usr/local/etc/postfix/mysql_relay_domains_maps.cf # Configuracion para sasl2 smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination

Se crea el usuario vmail que es el encargado de administrar los correos virtuales


pw useradd -n vmail -c VirtualMail -d /usr/data/postfix/virtual -s /usr/sbin/nologin

Crear la carpeta contenedora de los dominios virtuales y se le asignan los derechos correspondientes:
mkdir -p /usr/data/postfix/virtual chown -R postfix:maildrop /usr/data/postfix chmod -R 770 /usr/data/postfix

postfix start
Iniciar postfix

Comprobar el funcionamiento del demonio postfix con sockstat -4


USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS

root master 73687 11 tcp4 *:25 *:*

Configurar PostfixAdmin Se debe de ubicar en el directorio /usr/local/www/postfixadmin/ y modificar el archivo config.inc.php con la siguiente configuracin $CONF['default_language'] = 'es'; $CONF['database_type'] = 'mysql'; $CONF['database_host'] = 'localhost'; $CONF['database_user'] = 'postfix'; $CONF['database_password'] = 'postfix'; $CONF['database_name'] = 'postfix'; $CONF['database_prefix'] = ; $CONF['admin_email'] = 'postmaster@proyecto1.org'; $CONF['domain_path'] = 'YES'; $CONF['domain_in_mailbox'] = 'NO'; $CONF['aliases'] = '0' $CONF['mailboxes'] = '0' $CONF['maxquota'] = '0' $CONF['quota'] = 'YES' Se debe modifi car el archiv o rc.c onf ub icado en /etc/ ltim os pasos
Agreg ar estas lneas al final de htt pd.co nf ubi cado en/usr /local /etc/a pache /

Options Indexes AllowOverride AuthConfig

apache_enable="YES" sendmail_enable="YES" sendmail_flags="-bd" sendmail_pidfile="/var/spool/postfix/pid/master.pid" sendmail_outbound_enable="NO" sendmail_submit_enable="NO" sendmail_msp_queue_enable="NO" courier_authdaemond_enable="YES" courier_imap_imapd_enable="YES" courier_imap_pop3d_enable="YES" courier_imap_imapd_ssl_enable="YES" courier_imap_pop3d_ssl_enable="YES" mysql_enable="YES" mysql_datadir="/usr/data/mysql"

Luego de esto se reinici a el siste ma para proba r que todo inicie cuand o

bootea el sistema operativo Luego de que halla booteado, de abre un browser de internet y colocamos siguiente URL http://w.x.y.z/postfixadmin/ donde w.x.y.z es su direccion IP. Click en el hipervinculo setup, este redirigehttp://w.x.y.z/postfixadmin/setup.php que chequea todos los requisitos para el funcionamiento de PostfixAdmin. Si en el paso anterior no se obtiene ningun error, entonces se renombra el archivo /usr/local/www/postfixadmin/setup.php a/usr/local/www/ postfixadmin/setup.php.old Ahora solo queda dirigirse a http://w.x.y.z/postfixadmin/admin en donde entraremos a la parte administrativa del PostfixAdmin [El usuario y contrasea por default son admin:admin]

You might also like