User Tools

Site Tools


informatica:linux:correo:postfix

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
informatica:linux:correo:postfix [2011/01/17 08:27] 127.0.0.1informatica:linux:correo:postfix [2016/04/11 18:18] (current) javi
Line 1: Line 1:
 ====== Usar un servidor SMTP externo: ====== ====== Usar un servidor SMTP externo: ======
- 
- 
- 
- 
- 
- 
- 
- 
- 
 ===== Genérico (comprobado Jazztel) ===== ===== Genérico (comprobado Jazztel) =====
  
Line 18: Line 9:
 1. Instalamos postfix y otras cosillas 1. Instalamos postfix y otras cosillas
  
-  sudo aptitude update && sudo aptitude install libauthen-sasl-perl libsasl2-2 libsasl2-modules postfix+  sudo aptitude updatesudo aptitude install libauthen-sasl-perl libsasl2-2 libsasl2-modules postfix
  
 2. Teclear 'y' + 'enter' 2. Teclear 'y' + 'enter'
Line 34: Line 25:
 7. Lanzamos los siguientes comandos: 7. Lanzamos los siguientes comandos:
  
-  postconf -e 'relayhost = smtp.servidorexterno.es' +  sudo postconf -e 'relayhost = smtp.servidorexterno.es' 
-  postconf -e 'smtp_sasl_auth_enable = yes' +  sudo postconf -e 'smtp_sasl_auth_enable = yes' 
-  postconf -e 'smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd' +  sudo postconf -e 'smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd' 
-  postconf -e 'smtp_sasl_security_options =' +  sudo postconf -e 'smtp_sasl_security_options =' 
-  echo "smtp.servidorexterno.es usuario.subdominio.jazztel.es:contrasenya" > /etc/postfix/sasl_passwd  +  sudo echo "smtp.servidorexterno.es usuario.subdominio.jazztel.es:contrasenya" > /etc/postfix/sasl_passwd  
-  chown root:root /etc/postfix/sasl_passwd +  sudo chown root:root /etc/postfix/sasl_passwd 
-  chmod 600 /etc/postfix/sasl_passwd +  sudo chmod 600 /etc/postfix/sasl_passwd 
-  postmap hash:/etc/postfix/sasl_passwd +  sudo postmap hash:/etc/postfix/sasl_passwd 
-  postmap /etc/postfix/sasl_passwd+  sudo postmap /etc/postfix/sasl_passwd
  
 **NOTA** es importante (al menos en gmail) que se especifique el usuario en el formato 'usuario@gmail.com' **NOTA** es importante (al menos en gmail) que se especifique el usuario en el formato 'usuario@gmail.com'
Line 48: Line 39:
 **NOTA2** cada vez que se cambie la contraseña (archivo /etc/postfix/sasl_passwd) hay que: **NOTA2** cada vez que se cambie la contraseña (archivo /etc/postfix/sasl_passwd) hay que:
  
-  postmap hash:/etc/postfix/sasl_passwd +  sudo postmap hash:/etc/postfix/sasl_passwd 
-  postmap /etc/postfix/sasl_passwd +  sudo postmap /etc/postfix/sasl_passwd
-  /etc/init.d/postfix reload+
  
 Cuando enviemos un correo, por ejemplo desde la linea de comandos: Cuando enviemos un correo, por ejemplo desde la linea de comandos:
  
 +  sudo aptitude install mailutils
   echo "cuerpo del mensaje" | mail -s "asunto" cuenta@dominio.com   echo "cuerpo del mensaje" | mail -s "asunto" cuenta@dominio.com
  
Line 69: Line 60:
  
 ===== Gmail ===== ===== Gmail =====
 +
 +==== Receta usando puerto 587 ====
 +
 +Esta receta ha sido validada el 12/Septiembre/2013
 +
 +1. Instalar paquetes:
 +
 +  sudo aptitude install libgnutls26 libauthen-sasl-perl libsasl2-2 libsasl2-modules postfix
 +
 +2. Editar:
 +
 +  sudo cp /etc/postfix/main.cf /etc/postfix/main.cf.bak
 +  sudo vim /etc/postfix/main.cf
 +  
 +Con el siguiente contenido:
 +
 +<code>
 +smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
 +biff = no
 +
 +append_dot_mydomain = no
 +
 +readme_directory = no
 +
 +smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
 +smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
 +smtpd_use_tls=yes
 +smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
 +smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
 +smtp_tls_security_level = verify
 +smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
 +
 +myhostname = test.example.com
 +alias_maps = hash:/etc/aliases
 +alias_database = hash:/etc/aliases
 +myorigin = /etc/mailname
 +mydestination = test.example.com
 +relayhost = [smtp.gmail.com]:587
 +mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
 +mailbox_size_limit = 0
 +recipient_delimiter = +
 +inet_interfaces = all
 +smtp_sasl_auth_enable = yes
 +smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
 +smtp_sasl_security_options =
 +
 +</code>
 +
 +3. Editar:
 +
 +  sudo cp /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.bak
 +  sudo vim /etc/postfix/sasl_passwd
 +  
 +Con el siguiente contenido:
 +
 +  [smtp.gmail.com]:587 user@gmail.com:cleartextpassword
 +  
 +4. Regenerar bas de datos de contrasenyas:
 +
 +  sudo postmap /etc/postfix/sasl_passwd
 +
 +5. Recargar config de Postfix:
 +
 +  sudo postfix reload
 +
 +==== Receta antigua ====
  
 **NOTA IMPORTANTE** Desaconsejo esta opción, pues he detectado que cada x tiempo los correos no llegan, y es porque Gmail activa kaptcha para poder iniciar sesión con esa cuenta de correo. **NOTA IMPORTANTE** Desaconsejo esta opción, pues he detectado que cada x tiempo los correos no llegan, y es porque Gmail activa kaptcha para poder iniciar sesión con esa cuenta de correo.
Line 187: Line 244:
 recipient_delimiter = + recipient_delimiter = +
 inet_interfaces = all inet_interfaces = all
 +inet_protocols = ipv4
 smtp_use_tls = yes smtp_use_tls = yes
 smtp_sasl_auth_enable = yes smtp_sasl_auth_enable = yes
Line 194: Line 252:
  
 </code> </code>
 +
 +
 +
  
  
 ===== Errores ===== ===== Errores =====
 +
 +1. *Puerto okupado*
  
 Vemos en el log (/var/log/mail.log) lo siguiente: Vemos en el log (/var/log/mail.log) lo siguiente:
Line 214: Line 277:
 1. Mato el proceso: 1. Mato el proceso:
  
-kill -9 3644+  kill -9 3644
  
 2. Reinicio postfix: 2. Reinicio postfix:
  
-/etc/init.d/postfix restart+  /etc/init.d/postfix restart
  
 3. Compruebo: 3. Compruebo:
Line 227: Line 290:
 master  31025 root   12u  IPv4 1401587      0t0  TCP *:smtp (LISTEN) master  31025 root   12u  IPv4 1401587      0t0  TCP *:smtp (LISTEN)
 </code> </code>
 +
 +2. **Usuario incorrecto o kaptcha**
 +
 +<code>
 +Jan 18 17:22:43 cntmalaga1 postfix/pickup[29942]: 1D968455AA: uid=1000 from=<usuario>
 +Jan 18 17:22:43 cntmalaga1 postfix/cleanup[29952]: 1D968455AA: message-id=<20110118162243.1D968455AA@cntmalaga.dyndns.org>
 +Jan 18 17:22:43 cntmalaga1 postfix/qmgr[29943]: 1D968455AA: from=<usuario@cntmalaga.dyndns.org>, size=335, nrcpt=1 (queue active)
 +Jan 18 17:22:44 cntmalaga1 postfix/smtp[29954]: certificate verification failed for smtp.gmail.com[209.85.227.109]:25: untrusted issuer /C=US/O=Equifax/OU=Equi
 +fax Secure Certificate Authority
 +Jan 18 17:22:47 cntmalaga1 postfix/smtp[29954]: 1D968455AA: to=<javi@legido.com>, relay=smtp.gmail.com[209.85.227.109]:25, delay=4.3, delays=0.02/0.03/4.2/0, d
 +sn=4.7.1, status=deferred (SASL authentication failed; server smtp.gmail.com[209.85.227.109] said: 535-5.7.1 Username and Password not accepted. Learn more at 
 +                  ?535 5.7.1 http://mail.google.com/support/bin/answer.py?answer=14257 t11sm3077219wes.17)
 +Jan 18 17:24:47 cntmalaga1 postfix/smtpd[29957]: connect from mail-wy0-f180.google.com[74.125.82.180]
 +Jan 18 17:24:47 cntmalaga1 postfix/smtpd[29957]: NOQUEUE: reject: RCPT from mail-wy0-f180.google.com[74.125.82.180]: 554 5.7.1 <afiliados@cntmalaga.dyndns.org>
 +: Relay access denied; from=<raba1981@gmail.com> to=<afiliados@cntmalaga.dyndns.org> proto=ESMTP helo=<mail-wy0-f180.google.com>
 +Jan 18 17:24:47 cntmalaga1 postfix/smtpd[29957]: disconnect from mail-wy0-f180.google.com[74.125.82.180]
 +</code>
 +
 +3. **No relay**
 +
 +TODO
 +
 +<code>
 +Jan 18 17:38:25 cntmalaga1 postfix/smtpd[30532]: connect from mail-pv0-f180.google.com[74.125.83.180]
 +Jan 18 17:38:26 cntmalaga1 postfix/smtpd[30532]: NOQUEUE: reject: RCPT from mail-pv0-f180.google.com[74.125.83.180]: 554 5.7.1 <afiliados@cntmalaga.dyndns.org>: Relay access denied; from=<javilegido@gmail.com> to=<afiliados@cntmalaga.dyndns.org> proto=ESMTP helo=<mail-pv0-f180.google.com>
 +Jan 18 17:38:26 cntmalaga1 postfix/smtpd[30532]: disconnect from mail-pv0-f180.google.com[74.125.83.180]
 +</code>
 +
 +
 +===== Reenviar correo (relay) solo a determinadas direcciones =====
 +
 +Escenario:
 +
 +**Servidor A** con ip dinamica, una lista de correos instalada (milista)
 +**Servidor B** con ip estatica
 +
 +Problema:
 +
 +Queremos usar Servidor B de relay, pero que solo envie correos a las direcciones contenidas en la lista de correos del Servidor A
 +
 +Solucion:
 +
 +**Servidor A**
 +
 +1. Editar el archivo de configuracion de postfix:
 +
 +  sudo vim /etc/postfix/main.cf
 +
 +Y poner el nombre de **Servidor B** como relay:
 +
 +  relayhost = servidorb.com
 +
 +2. Reiniciar postfix:
 +
 +  sudo /etc/init.d/postfix restart
 +
 +3. Sacar un listado de los usuarios que estan dados de alta en la lista 'milista'
 +
 +  sudo list_members mi_lista
 +
 +La salida es algo asi:
 +
 +  cuenta1@hotmail.com
 +  cuenta2@gmail.com
 +
 +**Servidor B**
 +
 +4. Crear un archivo que contenga los usuarios a los que servidorb SI reenviara los correos que le lleguen:
 +
 +  sudo vim /etc/postfix/destinos_permitidos
 +
 +Con el siguiente contenido:
 +
 +  cuenta1@hotmail.com ok
 +  cuenta2@gmail.com ok
 +
 +5. Editar el archivo de configuracion de postfix:
 +
 +  sudo vim /etc/postfix/main.cf
 +
 +Y anyadir la siguiente entrada:
 +
 +  smtpd_recipient_restrictions = hash:/etc/postfix/destinos_permitidos, reject
 +
 +6. Generar el hash:
 +
 +  sudo postmap hash:/etc/postfix/destinos_permitidos 
 +  sudo postmap /etc/postfix/destinos_permitidos
 +
 +7. Reiniciar postfix:
 +
 +  sudo /etc/init.d/postfix restart
 +
 +8. Probar. Desde Servidor A:
 +
 +  echo "cuerpo del mensaje" | mail -s "Prueba 1" cuenta1@hotmail.com
 +
 +Ese correo deberia llegar a Servidor B, y este reenviarlo a cuenta1@hotmail.com
 +
 +===== Errores =====
 +
 +==== 504 5.5.2 ====
 +
 +Ejemplo:
 +
 +<code>
 +Apr 11 18:23:10 localhost postfix/smtp[8930]: 60AFB4258C: to=<javi@legido.com>, relay=mail.gandi.net[217.70.184.11]:587, delay=0.27, delays=0.01/0/0.14/0.12, dsn=5.5.2, status=bounced (host mail.gandi.net[217.70.184.11] said: 504 5.5.2 <ubuntu@localhost>: Sender address rejected: need fully-qualified address (in reply to RCPT TO command))
 +</code>
 +
 +Quiza falta configuracion en el servidor, he seguido la receta de relay de gmail con 587, probar lo siguiente para el envio del correo de prueba desde linea de comandos:
 +
 +<code>
 +echo "cuerpo del mensaje" | mail -s "postfix relay gandi 2" -a "From: tomegarbage@gmail.com" javi@legido.com
 +</code>
 +
 +
  
informatica/linux/correo/postfix.1295252858.txt.gz · Last modified: 2015/04/13 20:19 (external edit)