Home > HP-UX > Habilitar sendmail en hpux para que haga relay sin DNS

Habilitar sendmail en hpux para que haga relay sin DNS

Editamos el fichero /etc/mail/sendmail.cf y modificamos las entradas DS para indicarle el servidor contra el que vamos a hacer relay y el DM para el masquerade domain de la siguiente manera:

DSserver_smtp.compañia.comDMcompañia.com 

Reiniciamos sendmail, pero la sorpresa es que no envia correctamente los mensajes. Vemos el siguiente error en el mail.log:

Dec 3 09:39:45 maquina sendmail[21506]: lB38dj921506: to=destinatario@dominio.com,
delay=00:00:00, mailer=esmtp, pri=0, relay=dominio.com,dsn=4.4.3,
stat=Transient parse error — message queued for future delivery 

Esto no me ofrecia mucha ayuda asi que consultandolo con Alex, me enseña este estupendo comando para hacer un debug mucho más afondo del sendmail:

# test | sendmail -v -d8.99 -d38.99
destinatario@dominio.comseq_map_parse(aliases.files, );;
res_query(148.171.10.172.in-addr.arpa, 1, 12);;
Querying server (# 1) address = 0.0.0.0;;
Querying server (# 1) address = 0.0.0.0;;
Querying server (# 1) address = 0.0.0.0;;
Querying server (# 1) address = 0.0.0.0;;
res_query: send error;;
res_query(12.0.0.30.in-addr.arpa, 1, 12);;
Querying server (# 1) address = 0.0.0.0;;
Querying server (# 1) address = 0.0.0.0;;
Querying server (# 1) address = 0.0.0.0;;
Querying server (# 1) address = 0.0.0.0;;
res_query: send erroropenmap() dequote:dequote NULL: validopenmap() host:host NULL: validgetcanonname(dominio.com), trying filestext_getcanonname(dominio.com)getcanonname(dominio.com), trying dnsdns_getcanonname(dominio.com, trymx=1)dns_getcanonname: trying dominio.com. (ANY);; res_querydomain(dominio.com, , 1, 255);;
res_query(hp.com., 1, 255);;
Querying server (# 1) address = 0.0.0.0;;
Querying server (# 1) address = 0.0.0.0;;
Querying server (# 1) address = 0.0.0.0;;
Querying server (# 1) address = 0.0.0.0;;
res_query: send errorNO: errno=239, h_errno=2dns_getcanonname: trying dominio.com. (AAAA);;
res_querydomain(dominio.com, , 1, 28);;
res_query(dominio.com., 1, 28);; Querying server (# 1) address = 0.0.0.0;;
Querying server (# 1) address = 0.0.0.0;; Querying server (# 1) address = 0.0.0.0;;
Querying server (# 1) address = 0.0.0.0;; res_query: send errorNO: errno=239, h_errno=2getcanonname(dominio.com), failed, status=75dominio.com: Name server timeoutdestinatario@dominio.com… Transient parse error — message queued for future deliverydestinatario@dominio.com… queuedclosemaps: closing host (NULL)closemaps: closing dequote (NULL) 

Con esto vemos que es un problema de DNS, intenta resolver el dominio que claramente no resuelve las direcciones de internet, aunque no debería de hacerlo ya que solo deberia de hacer relay hacia el servidor que le hemos indicado, sin intentar resolver, nada más.Vemos que el DNS es llamado por “dns_getcanonname”. Para deshabilitar el DNS lookup, deberemos de editar el sendmail.cf y localizar las siguientes entradas:

# hostnames ending in class P are always canonicalR$* < @ $* $=P > $*          $: $1 < @ $2 $3 . > $4R$* < @ $* $~P > $*          $: $&{daemon_flags} $| $1 < @ $2 $3 > $4R$* CC $* $| $*              $: $3

Comentamos la linea que añade el daemon flag que es el trigger para el DNS.

# hostnames ending in class P are always canonicalR$* < @ $* $=P > $* $: $1 < @ $2 $3 . > $4###R$* < @ $* $~P > $* $: $&{daemon_flags} $| $1 < @ $2 $3 > $4R$* CC $* $| $* $: $3

Reiniciamos el sendmail y probamos de nuevo:

# test | sendmail -v -d8.99 -d38.99 destinatario@dominio.comseq_map_parse(aliases.files, );; res_query(147.171.10.172.in-addr.arpa, 1, 12);; Querying server (# 1) address = 0.0.0.0;; Querying server (# 1) address = 0.0.0.0;; Querying server (# 1) address = 0.0.0.0;; Querying server (# 1) address = 0.0.0.0;; res_query: send error;; res_query(29.148.18.172.in-addr.arpa, 1, 12);; Querying server (# 1) address = 0.0.0.0;; Querying server (# 1) address = 0.0.0.0;; Querying server (# 1) address = 0.0.0.0;; Querying server (# 1) address = 0.0.0.0;; res_query: send error;; res_query(11.0.0.30.in-addr.arpa, 1, 12);; Querying server (# 1) address = 0.0.0.0;; Querying server (# 1) address = 0.0.0.0;; Querying server (# 1) address = 0.0.0.0;; Querying server (# 1) address = 0.0.0.0;; res_query: send erroropenmap() dequote:dequote NULL: validgetmxrr(11.0.1.187, droplocalhost=1);; res_querydomain(11.0.1.187, <Nil>, 1, 15);; res_query(11.0.1.187, 1, 15);; Querying server (# 1) address = 0.0.0.0;; Querying server (# 1) address = 0.0.0.0;; Querying server (# 1) address = 0.0.0.0;; Querying server (# 1) address = 0.0.0.0;; res_query: send error;; res_querydomain(11.0.1.187, , 1, 15);; res_query(11.0.1.187., 1, 15);; Querying server (# 1) address = 0.0.0.0;; Querying server (# 1) address = 0.0.0.0;; Querying server (# 1) address = 0.0.0.0;; Querying server (# 1) address = 0.0.0.0;; res_query: send errorgetmxrr: res_search(11.0.1.187) failed (errno=239, h_errno=2)destinatario@dominio.com… Connecting to 11.0.1.187 via relay…220 server_relay.empresa.com ESMTP Email Server SMTP Inbound Server 9.0.4.0.0 Ready>>> EHLO myhost.empresa.com250-server_relay.empresa.com Hello myhost.empresa.com, pleased to meet you250-8BITMIME250-SIZE 6291456250-DSN250-ENHANCEDSTATUSCODES250-XAUTH250-XDN250 HELP>>> MAIL From:<usuario@empresa.com>250 2.1.0 Sender OK>>> RCPT To:<destinatario@dominio.com>250 2.1.5 Recipient ok>>> DATA354 Enter mail, end with “.” on a line by itself>>> .250 2.6.0 Message accepted for deliverydestinatario@dominio.com… Sent (Message accepted for delivery)Closing connection to 10.0.1.187>>> QUIT221 2.0.0 server_relay.empresa.com Closing connectionclosemaps: closing dequote (NULL)

Pese a obtener estos errores, el correo llega.Hay que tener en cuenta que esta situación ha venido provocada debido a diversas pruebas por las que, se tenian que comentar todas las entradas en el resolv.conf teniendo el nsswitch.conf para que resuelva por files y luego DNS.Esta misma situación se resuelve indicando en el nsswich para que resuelva unicamente por files.

Categories: HP-UX Tags: ,
  1. December 4th, 2007 at 01:15 | #1

    Whau… Me has dejado sin voz! Y eso de comentar la linea con daemon_flags, ¿como se te ha occurrido? (Porque con el monton de lineas que hay en el sendmail… como para encontrar la linea que toca comentar.

    Me lo voy a apuntar, porque seguro que me toca hacerlo algun dia!

    Bravo!

  2. December 4th, 2007 at 09:42 | #2

    La verdad es que no se me ocurrió a mi, no puedo poner el link de donde lo saqué por que no es de una web pública aunque el contenido si lo sea, asi que ya puedes quitarme los méritos :)

    Yo no entiendo la configuración de sendmail, no se si habrá algún ser humano que sea capaz de leerla y entenderla :D

  3. Emerson
    May 22nd, 2008 at 22:16 | #3

    Hola, una pregunta, hice todos los pasos y funciona OK. Pero solo me llegan correos dentro de mi dominio, como se hace para mandar a correos fuera del dominio?

  4. May 22nd, 2008 at 22:20 | #4

    Tendrás que ver varias cosas como si el servidor que hace relay, te permite el envio de mensajes fuera de su dominio o si has enmascarado tu dominio. Donde se queda el correo, si sale de la máquina o no. Haz un seguimiento de ese correo y en el servidor que se quede, echa un viztado a los logs. También puedes probar a enmascarar el dominio, tienes que poner DMdominio.com en el mismo fichero de configuración.

    Comentanos como te ha ido!

  5. Emerson
    May 22nd, 2008 at 22:33 | #5

    mira, el servidor donde esta montado el HP-UX es uno que contiene solamente una base de datos y el ERP SAP (172.29.143.41), el servidor de correos que tenemos, es un exchange 2000 y esta en otro servidor (172.29.140.35).
    Así lo configuré en el archivo sendmail.cf

    DS172.29.140.35
    DMdominiodemiempresa.com

    En las configuraciones del exchange, especificamente en la parte de protocolos SMTP , en las reglas de RELAY puse al server SAP.

    Asi deberia estar bien verdad?

  6. May 22nd, 2008 at 22:47 | #6

    La configuración en la parte unix parece correcta, siento no poder ayudarte con la del exchange.
    Si haces “mailq” ¿Sale ese correo que acabas de enviar de la máquina?
    Si el correo sale de la máquina, que dicen los logs del exchange?

  7. Emerson
    May 22nd, 2008 at 23:06 | #7

    cuando le doy el comando mailq no aparece nada, asi que asumo que no hay error ahí.

    Pareciera que el problema es en el exchange, porque revisando los logs, si aparece el trace de ese correo en especifico que mandé a otro dominio. Seguiré averiguando, Gracias amigo.

    CUando descubra el error, te lo comento para que quede escrito y ayude a otras personas

    Saludos desde PYT

  1. No trackbacks yet.