Base de Conocimiento Base de Conocimiento

« Volver a Servidor de Correo...

Instalación y Configuración de Sendmail de RedHat-CentOS

Etiquetas: sendmail

Sobre Sendmail#

Las raíces de Sendmail se remontan al nacimiento del correo electrónico, una década antes de que naciese ARPANET, el precursor de Internet. Por entonces, cada buzón de usuario era un fichero con derechos de sólo lectura y las aplicaciones de correo eran simplemente texto incorporado en ese fichero. Cada usuario tenía que abrir y meterse de lleno en el fichero de correo para buscar correos antiguos y leer el correo nuevo era toda una faena. La primera transferencia real de un fichero de mensaje de correo entre dos equipos tuvo lugar hasta el año de 1972, año en el que el correo electrónico empezó a transferirse por FTP a través de un protocolo de red NCP. Este método de comunicación más sencillo muy pronto se hizo popular, incluso hasta el punto de representar la mayor parte del tráfico de ARPANET en menos de un año.

Sin embargo, la falta de estándares entre los protocolos existentes convirtió al correo electrónico en más difícil de enviar desde algunos sistemas y así continuó hasta que ARPANET creó el estándar TCP/IP en 1982. Un nuevo protocolo, SMTP, que se materializaba en el transporte de mensajes. Estos avances, en combinación con la sustitución de los ficheros host por dns, permitieron que se materializasen los agentes MTA con funciones completas. Sendmail, que creció a partir de un precedente sistema de entrega de correo electrónico denominado Delivermail, muy pronto se convirtió en estándar a medida que Internet comenzaba a expandirse y a utilizarse más ampliamente.

El unico punto debil que preseta sendmail es que este este posee el mayor numero de errores los cuales son reparados casi de inmediato.

Sendmail en la actualidad#

Algunos analisis y encuentas nos expresan comentarios muy buenos sobre Sendmail, esto de acuerdo a una encuesta realizada por la editorial O'Reilly, la cual formulo la siguiente pregunta: ¿Cuantas empresas tienen implementado como servidor de correo a Sendmail? Para dicha encuesta se seleccionaron al rededor de 400 000 dominios, de los cuales el 12.3 % de los encuestados respondieron que tenian implementado a Sendmail como servidor de correo, el segundo lugar fue para Postfix con un 8.6 % y en tercer lugar tenemos a Postini con el 8.5%

Esta encuesta la puedes encontrar en la siguiente direccion web: http://www.oreillynet.com/lpt/a/6849

Protocolo SMTP#

Simple Mail Transfer Protocol (SMTP) Protocolo Simple de Transferencia de Correo, es un protocolo de la capa de aplicación. Protocolo de red basado en texto utilizado para el intercambio de mensajes de correo electrónico entre computadoras u otros dispositivos

SMTP se basa en el modelo cliente-servidor, donde un cliente envía un mensaje a uno o varios receptores. La comunicación entre el cliente y el servidor consiste enteramente en líneas de texto compuestas por caracteres ASCII. El tamaño máximo permitido para estas líneas es de 1000 caracteres.

Las respuestas del servidor constan de un código numérico de tres digitos, seguido de un texto explicativo. El número va dirigido a un procesado automático de la respuesta por autómata, mientras que el texto permite que un humano interprete la respuesta. En el protocolo SMTP todas las órdenes, réplicas o datos son líneas de texto, delimitadas por el carácter <CRLF>. Todas las réplicas tienen un código numérico al comienzo de la línea.

En el conjunto de protocolos TCP/IP, el SMTP va por encima del TCP, usando normalmente el puerto 25 en el servidor para establecer la conexión.

Protocolo POP3#

POP3 está diseñado para recibir correo, no para enviarlo; le permite a los usuarios con conexiones intermitentes ó muy lentas (tales como las conexiones por módem), descargar su correo electrónico mientras tienen conexión y revisarlo posteriormente incluso estando desconectados. Cabe mencionar que la mayoría de los clientes de correo incluyen la opción de dejar los mensajes en el servidor, de manera tal que, un cliente que utilice POP3 se conecta, obtiene todos los mensajes, los almacena en la computadora del usuario como mensajes nuevos, los elimina del servidor y finalmente se desconecta. En contraste, el protocolo IMAP permite los modos de operación conectado y desconectado.

Los clientes de correo electrónico que utilizan IMAP dejan por lo general los mensajes en el servidor hasta que el usuario los elimina directamente. Esto y otros factores hacen que la operación de IMAP permita a múltiples clientes acceder al mismo buzón de correo. La mayoría de los clientes de correo electrónico soportan POP3 ó IMAP; sin embargo, solo unos cuantos proveedores de internet ofrecen IMAP como valor agregado de sus servicios.

Protocolo IMAP#

Internet Message Access Protocol, o su acrónimo IMAP, es un protocolo de red de acceso a mensajes electrónicos almacenados en un servidor. Mediante IMAP se puede tener acceso al correo electrónico desde cualquier equipo que tenga una conexión a Internet. IMAP tiene varias ventajas sobre POP, que es el otro protocolo empleado para obtener correo desde un servidor. Por ejemplo, es posible especificar en IMAP carpetas del lado servidor. Por otro lado, es más complejo que POP ya que permite visualizar los mensajes de manera remota y no descargando los mensajes como lo hace POP.

Ventajas sobre POP3#

Respaldo para los modos de operación conetado y desconectado.

Al utilizar POP3, los clientes se conectan brevemente al servidor de correo, solamente el tiempo que les tome descargar los nuevos mensajes. Al utilizar IMAP, los clientes permanecen conectados el tiempo que su interfaz permanezca activa y descargan los mensajes bajo demanda. Esta manera de trabajar de IMAP puede dar tiempos de respuesta más rápidos para usuarios que tienen una gran cantidad de mensajes o mensajes grandes.

Respaldo para que la información de estado del mensaje se mantenga en el servidor.

A través de la utilización de señales definidas en el protocolo IMAP4 de los clientes, se puede vigilar el estado del mensaje, por ejemplo, si el mensaje ha sido o no leído, respondido o eliminado. Estas señales se almacenan en el servidor, de manera que varios clientes conectados al mismo correo en diferente tiempo pueden detectar los cambios hechos por otros clientes.

Respaldo para búsquedas de parte del servidor.

IMAP4 proporciona un mecanismo para que los clientes pidan al servidor que busque mensajes de acuerdo a una cierta variedad de criterios. Este mecanismo evita que los clientes descarguen todos los mensajes de su buzón de correo, agilizando, de esta manera, las búsquedas.

Instalación de Sendmail#

El proceso de instalacion de Sendmail requiere de los siguientes paquetes

  • sendmail
  • sendmail.cf
  • dovecot
  • cyrus
  • cyrus-sasl-mmd5
  • cyrus-sasl-plain
  • make
  • m4

Sobre el paquete sendmail y senmail.cf#

Este paquete incluye el MUA Sendmail asi como los archivos de configuacion propios de sendmail.

Sobre el paquete dovecot#

Dovecot es el servidor de IMAP y POP3 de Linux.

Sobre el paquete cyrus-sasl#

SASL son las siglas de Simple Authentication and Security Layer, método que añade un soporte adicional para la autenticación de los protocolos que fundamentan su conexión en la estandarización fijada por la IETF (Internet Engineering Task Force). Se usa en servidores, como Cyrus IMAP, para controlar las peticiones de acceso de los clientes. El protocolo de autenticación incluirá comandos para la correcta apertura del canal cliente-servidor y las subsiguientes aperturas del canal para la toma de nuevos datos. Opcionalmente, puede negociarse una capa de seguridad entre el protocolo mismo y la conexión. Cyrus SASL utiliza OpenSSL para cifrar los datos.

Para llevar a cabo la instalacion de estos paquetes solo teclee en terminal lo siguiente:

[BASH]#  yum install -y  sendmail  sendmail.cf  dovecot  cyrus-sasl  cyrus-sasl-plain  cyrus-sasl-md5  make m4

Configuracion Basica de Sendmail#

Los ficheros generados a partir de la instalacion del servidor de coreo Sendmail que modificaremos seran los siguientes:

  • access
  • local-host-names
  • relay-domains ---> (Este fichero sera creado por usted)
  • sendmail.mc

El fichero relay-domains no existe por lo que tendra que ser creado por usted mismo Estos ficheros los puedes localizar en:

/etc/mail/

Configuracion del fichero --> /etc/mail/access#

En este fichero se definen los dominios o conjunto de direcciones IP que podran hacer uso o no del servidor de correo. La sintaxis de este fichero es el siguiente

Connect:midominio1.net                            [accion]
Connect:midominio2.net [accion] Connect:midominio3.net [accion] Connect:midominio4.net [accion] }}}

Los valores que puede tomar el parametro (accion) son los siguientes:

RELAYPermite el envio de correo a travez de nuestro servidor
REJECTNiega el uso de nuestro servidor para la entrega de correo

Ejemplo:

# Check the /usr/share/doc/sendmail/README.cf file for a description 

  1. of the format of this file. (search for access_db in that file)
  2. The /usr/share/doc/sendmail/README.cf is part of the sendmail-doc
  3. package.
  4. If you want to use AuthInfo with "M:PLAIN LOGIN", make sure to have the
  5. cyrus-sasl-plain package installed.
  6. By default we allow relaying from localhost...

Connect:localhost.localdomain RELAY Connect:localhost RELAY Connect:127.0.0.1 RELAY

  1. IP Publica de su Servidor de correo

Connect: 207.249.24.30 RELAY

  1. Nombre de su Dominio

Connect: midominio.com.mx RELAY

  1. Nombre de su Equipo

Connect: correo.midominio.com.mx RELAY

  1. IP Local de su Servidor de correo

Connect: 192.168.1.10 RELAY

  1. Dominios y direcciones IP a quienes se les negara el envio de correo

Connect:spammers.com.ar REJECT Connect:yourporn.net REJECT Connect:207.46.197.32 REJECT Connect:207.46.197.32 REJECT}}}

Como podemos observar, solo permitimos el envio de correo a nuestro propio dominio asi como tambien a la direccion IP publica que tiene asignada nuestro dominio, asi mismo estamos denegando el uso de nuestro servidor de correo a dominios como spammers.com.ar , yourporn.net y a las direcciones IP 207.46.197.32 y 207.46.197.32.

Configuracion del fichero --> /etc/mail/local-host-names#

Se suele utilizar para escribir aquellos dominios o equipos de los cuales sendmail va a recibir correo. Por ejemplo, si nuestro servidor de correo va a aceptar correo proveniente del dominio

midominio.com.mx 
y también de la máquina
correo.midominio.com.mx
nuestro fichero local-host-names debería quedar editado de la siguiente forma
correo.midominio.com.mx
midominio.com.mx }}}

Configuracion del fichero --> /etc/mail/relay-domains#

En este fichero se introduciran los nombres de los equipos, redes o dominios desde o hacia las que podemos hacer transmisión de correo. Por ejemplo:

midominio.com.mx
correoomidominio.com.mx}}} Como podemos observar estamos permitiendo la transmisión a cualquier correo que “venga de” o “vaya hacia” el dominio “midominio.com.mx” , asi como tambien al dominio “correo.midominio.com.mx”. Practicamente es una copia del fichero /etc/mail/local-host-names

Configuracion del fichero --> /etc/mail/sendmail.mc#

Este fichero contiene la configuración completa del servidor de correo, es por ello que debe ser cuidadoso al momento de editarlo.

Activando interfaces de red#

Por defecto sendmail esta configurado para enviar correos desde la interfaz loopback 127.0.0.1,esto quiere decir que unicamente el servidor envia correos a si mismo, para cambiar este comportamiento solo deberas ubicar la siguiente linea:

DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
y eliminar el parametro
Addr=127.0.0.1
Al final, la linea debera quedar de la siguiente manera
DAEMON_OPTIONS(`Port=smtp, Name=MTA')dnl
Con esta accion sendmail asumira que podrá enviar correos desde cualquier IP. Asi mismo tambien podras declar cada una de las direcciones IP por las cuales se podra enviar correo Ejemplo:
DAEMON_OPTIONS(`Port=smtp,Addr=192.168.0.1 Name=MTA')dnl
DAEMON_OPTIONS(`Port=smtp,Addr=172.16.0.10 Name=MTA')dnl}}}

Filtrado de dominios no validos#

Por defecto, Sendmail esta configurado para aceptar correos de dominios no resueltos. Una forma de cambiar este comportamiento es comentando la siguiente linea del fichero /etc/mail/sendmail.mc.

FEATURE(`accept_unresolvable_domains')dnl
Solo tendra que agregar la palabra
dnl
al comienzo de la linea Al finalizar debera quedar de la siguiente forma
dnl FEATURE(`accept_unresolvable_domains')dnl
Con esta accion usted estara restrigiendo el paso de spam a su servidor de correo

Enmascarar dominios#

Si tu intencion es enviar correo con solo un dominio lo conveniente es enmascarar todos los correos emitidos desde el servidor con el nombre de tu dominio. Para ello ubica la siguiente linea:

dnl MASQUERADE_AS(`mydomain.com')dnl
descomenta la linea eliminando la palabra
dnl
que se encuentra al principio de la linea y luego introduce el nombre de tu dominio como se a muestra a continuacion
dnl MASQUERADE_AS(`midominio.com.mx')dnl
Con esta accion lograras que tus correos salgan con la terminacion
@midominio.com.mx
Igualmente ubique las siguientes lineas y tambien descomentelas
FEATURE(masquerade_envelope)dnl 
FEATURE(masquerade_entire_domain)dnl }}}

Habilitar el puerto 587 para el envio de correo#

Telmex está implementado medidas para ayudar a combatir el spam en sus servicios. Estó afecta a los usuarios que usan su conectividad, ya que basicamente, están bloqueando el puerto 25 SMTP, el cual comúnmente es utilizado para el envío de correo electrónico. Si tu cuentas con un servicio Infinitum con IP Dinámica y desea verificar si va a ser afectado por esta medida, le sugerimos realizar lo siguiente: Revisar la configuración de su cliente de correo para enviar mensajes de forma segura, si confirma que su servicio está siendo bloqueado contacte a su administrador del servicio de correo electrónico sobre las alternativas para enviar correo o bien: Solicita a TELMEX que elimine la protección del puerto 25 SMTP de su cuenta de acceso a Internet. Una vez que se haya eliminado la protección del puerto 25, por favor desconecte su módem y conéctelo nuevamente. Esta solicitud se puede hacer en línea en: Asi mismo, recomendamos abrir el puerto alternativo 587 de SMTP para el envio de correo en su servidor. Para hacerlo, busque la siguiente linea

dnl DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl 
descomenta la linea eliminando la palabra
dnl
que se encuentra al principio de la linea, con eso tendras habilitado el envio por e
dnl DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl 
Con esta accion habras habilitado el envio de correo a traves del puerto 587

Habilitar la autenticacion de los usuarios de correo#

La linea

define(`confAUTH_OPTIONS', `A')dnl 
la cual se encuentra habilitada por defecto permite realizar autenticacion de usuarios por el metodo PLAIN o mediante cifrado. El metodo PLAIN consiste en autenticacion en texto plano Dejar esta linea activada presenta cierto riesgo de seguridad ya que todas las contraseñas de los usuarios viajan en texto claro lo cual podria ser aprovechado por algun analizador de protocolos y robar las contraseñas. Una manera de solucionar este problema seria comentando la anterior linea y en su lugar descomentar la siguiente.
define(`confAUTH_OPTIONS', `A p')dnl 
Esta accion desactiva la autenticación en texto plano y en su lugar activa la autenticacion mediante cifrado, el unico inconveniente es que obligaria a sus clientes o usuarios a utilizar clientes de correo con soporte para autenticacion mediante cifrado.No lo olvide

Adicionalmente ubique las siguientes lineas y tambien descomentelas

TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl 
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl }}}

Configuracion del servidor dovecot#

Por defecto,el servidor dovecot tiene deshabilitados los protocolos pop e imap lo cuales son necesarios para la entrega de correo, la forma de habilitar estos protocolos es de la siguiente manera. Edite el siguiente fichero con la ayuda de cualquier editor de textos

/etc/dovecot.conf
Ubique la siguiente linea
#protocols = imap imaps pop3 pop3s 
Y solo borre las siguientes palabras asi como tambien la almohadilla de “#”
imaps pop3s
Al final debera lucir de la siguiente manera:
protocols = imap pop3 
Guarde los cambios y salga de la terminal

Configuracion Avanzada de Sendmail#

Limitando el numero de destinatarios de correo#

La manera de establecer un numero maximo de destinatarios para un mensaje de correo electronico se hace agregando la siguiente linea:

define(`confMAX_RCPTS_PER_MESSAGE', `10')dnl
justo debajo de la linea
dnl define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl 
El numero 10 hace referencia al numero maximo de destinarios para un mensaje de coreo, tu puedes modificar este valor segun tu conveniencia Al finalizar debera lucir de la sigueinte manera
dnl define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl
define(`confMAX_RCPTS_PER_MESSAGE', `10')dnl}}}

Limitando el tamaño de la cabecera de un correo#

La manera de establecer un tamaño maximo de cabecera para un mensaje de correo electronico se hace agregando la siguiente linea:

define(`confMAX_HEADERS_LENGTH', `10240')dnl
justo debajo de la linea
define(`confMAX_RCPTS_PER_MESSAGE', `10')dnl 
El numero 10240 es equivalente a 10Kb (Kilobytes),tu puedes modificar este valor segun tu conveniencia Al finalizar debera lucir de la sigueinte manera
define(`confMAX_RCPTS_PER_MESSAGE', `10')dnl
define(`confMAX_HEADERS_LENGTH', `10240')dnl }}}

Limitando el tamaño para un mensaje de correo#

La manera de establecer un tamaño maximo para un mensaje de correo electronico se hace agregando la siguiente linea

define(`confMAX_MESSAGE_SIZE', `3075000')dnl
justo debajo de la linea
define(`confMAX_HEADERS_LENGTH', `10240')dnl 
}El numero 3075000 es equivalente a 3Mb (Megabytes),tu puedes modificar este valor segun tu conveniencia Al finalizar debera lucir de la sigueinte manera
define(`confMAX_HEADERS_LENGTH', `10240')dnl 
define(`confMAX_MESSAGE_SIZE', `3075000')dnl}}}

Limitando el numero de procesos hijos en el servidor de correo#

La forma de limitar el numero de procesos hijos que se permitirán simultáneamente en el servidor de correo sera de la siguiente manera: Agrege la siguiente linea

define(`confMAX_DAEMON_CHILDREN', `5')dnl
justo debajo de la linea
define(`confMAX_MESSAGE_SIZE', `3075000')dnl
Al finalizar debera lucir de la sigueinte manera
define(`confMAX_MESSAGE_SIZE', `3075000')dnl
define(`confMAX_DAEMON_CHILDREN', `5')dnl}}}

Limitando el numero de conexiones#

La forma de limitar el numero de conexiones por segundo que se permitirán en el servidor de correo sera de la siguiente manera: Agrege la siguiente linea

define(`confCONNECTION_RATE_THROTTLE', `4')dnl
justo debajo de la linea
define(`confMAX_DAEMON_CHILDREN', `5')dnl
Al finalizar debera lucir de la sigueinte manera
define(`confMAX_DAEMON_CHILDREN', `5')dnl
define(`confCONNECTION_RATE_THROTTLE', `4')dnl}}}

Alta de cuentas de correo#

La forma en que dara de alta cuentas de correo para sus usuarios sera de la siguiente manera

[BASH]# useradd -s /sbin/nologin  nombreDelsuario

Asignando contraseñas a las cuentas de correo#

La forma en que asignara contraseñas a las cuentas de correo sera a travez de dos fases. La primera aplicando el siguiente comando

[BASH]# passswd  nombreDelsuario
y la segunda aplicando este otro
[BASH]# saslpasswd2 nombreDelsuario

Iniciar , detener o reiniciar el servidor de Correo#

Para iniciar el servidor de correo por primera vez solo deberá teclear en terminal el siguiente comando:

[root@ localhost ~]# /etc/init.d/sendmail start
Igualmente existen opciones ya sea para reiniciar, detener, recargar o conocer el status en el que se encuentra el servidor de correo. Estas opciones pueden ser consultadas en la siguiente tabla:

startInicia el servicio
stopDetiene el servicio
restartReinicia el servicio.-La diferencia con reload radica en que al ejecutar un restart este mata todos los procesos relacionado con el servicio y los vuelve a generar de nueva cuenta
reloadRecarga el servicio.-La diferencia con restart radica en que al ejecutar un reload este solamente carga las actualizaciones hechas al fichero de configuración del servicio sin necesidad de matar los procesos relacionados con el mismo, por lo que podría entenderse que hace el cambio en caliente.
condrestartReinicio Condicional.- Solamente se inicia si el servicio se encuentra ejecutándose.
statusDa a conocer el estado en el que se encuentra el servicio

Como alternativa también podemos ocupar el siguiente comando para iniciar el servidor de correo

[root@ localhost ~]# service sendmail start
Y de igual manera podemos usar las opciones antes descritas en la tabla anterior. Recuerde que estos comandos se ejecutan como root.

Iniciar , detener o reiniciar el servidor Dovecot#

Para iniciar el servidor de correo por primera vez solo deberá teclear en terminal el siguiente comando:

[root@ localhost ~]# /etc/init.d/dovecot start
Igualmente existen opciones ya sea para reiniciar, detener, recargar o conocer el status en el que se encuentra el servidor dovecot. Estas opciones pueden ser consultadas en la siguiente tabla:

startInicia el servicio
stopDetiene el servicio
restartReinicia el servicio.-La diferencia con reload radica en que al ejecutar un restart este mata todos los procesos relacionado con el servicio y los vuelve a generar de nueva cuenta
reloadRecarga el servicio.-La diferencia con restart radica en que al ejecutar un reload este solamente carga las actualizaciones hechas al fichero de configuración del servicio sin necesidad de matar los procesos relacionados con el mismo, por lo que podría entenderse que hace el cambio en caliente.
condrestartReinicio Condicional.- Solamente se inicia si el servicio se encuentra ejecutándose.
statusDa a conocer el estado en el que se encuentra el servicio

Como alternativa también podemos ocupar el siguiente comando para iniciar el servidor de correo

[root@ localhost ~]# service dovecot start
Y de igual manera podemos usar las opciones antes descritas en la tabla anterior. Recuerde que estos comandos se ejecutan como root.

Iniciar , detener o reiniciar el servicio de autenticacion#

Para iniciar el servidor de correo por primera vez solo deberá teclear en terminal el siguiente comando:

[root@ localhost ~]# /etc/init.d/saslauthd start
Igualmente existen opciones ya sea para reiniciar, detener, recargar o conocer el status en el que se encuentra el servicio de autenticacion saslauthd. Estas opciones pueden ser consultadas en la siguiente tabla:

startInicia el servicio
stopDetiene el servicio
restartReinicia el servicio.-La diferencia con reload radica en que al ejecutar un restart este mata todos los procesos relacionado con el servicio y los vuelve a generar de nueva cuenta
reloadRecarga el servicio.-La diferencia con restart radica en que al ejecutar un reload este solamente carga las actualizaciones hechas al fichero de configuración del servicio sin necesidad de matar los procesos relacionados con el mismo, por lo que podría entenderse que hace el cambio en caliente.
condrestartReinicio Condicional.- Solamente se inicia si el servicio se encuentra ejecutándose.
statusDa a conocer el estado en el que se encuentra el servicio

Como alternativa también podemos ocupar el siguiente comando para iniciar el servidor de correo

[root@ localhost ~]# service saslauthd start
Y de igual manera podemos usar las opciones antes descritas en la tabla anterior. Recuerde que estos comandos se ejecutan como root.

0 archivos adjuntos
15183 Accesos
Promedio (0 Votos)
La valoración media es de 0.0 estrellas de 5.
Comentarios
alguien a probado este tutorial la verdad instale 3 veces la maquina pensado que tenia problemas pero nunca me funciona segui todo al pie de la letra. tienen experiencias en este en particular
Publicado el día 4/08/10 20:20.
no funciona esta configuracion ya la he probado varias veces
Publicado el día 27/10/11 13:21 en respuesta a rodrigo salinas perez.