Professional Documents
Culture Documents
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
Una vez instalado el Qpopper editaremos el archivo /etc/inetd.conf para configurar el inicio del servidor pop3.
server# vi /etc/inetd.conf
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
Una vez instalado el popd editaremos el archivo/etc/inetd.conf para configurar el inicio del servidor pop3.
server# vi /etc/inetd.conf
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
#$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
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
Ya slo queda hacer el archivo binario para que Sendmail funcione con los cambios realizados.
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
Estas lneas hacen que sendmail coja la configuracin correcta para usar cyrus-sasl a la hora de compilar.
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
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.
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
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 :
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)
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 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"
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
*:* 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
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
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
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 /
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]