¿Cómo cambio el nombre_host_principal de Exim4 en un cuadro de Debian?

24

Algunos servidores SMTP remotos a los que estoy tratando de enviar correo rechazan aceptar HELO de mi servidor:

504 5.5.2 <localhost>: Helo command rejected: need fully-qualified hostname

Aparentemente, mi servidor Exim4 envía localhostcomo su FQDN. Al buscar en la red y en un montón de archivos de configuración, he aprendido que el valor enviado como FQDN durante HELO se extrae de la primary_hostnamevariable de configuración.

Mi pregunta es: ¿cuál es la forma correcta de cambiar esta variable en un sistema Debian? Supongo que simplemente puedo codificar un valor en uno de los archivos de configuración de Exim4, pero en mi humilde opinión, parece tener más sentido si el valor corresponde automáticamente a /etc/mailnamealguna otra configuración de nombre centralizado.

Tengo la sensación de que la respuesta a mi pregunta se puede encontrar en este texto de la wiki de Debian :

El nombre utilizado por Exim en EHLO / HELO se extrae de la opción de configuración primary_hostname. La configuración predeterminada exim4 de Debian no se establece primary_hostname. Exim, por defecto, es uname () para encontrar el nombre del host. Si esa llamada solo devuelve un componente, se utiliza gethostbyname () o getipnodebyname () para obtener el nombre de host completo.

Si su Exim HELOs como localhost.localdomain, entonces probablemente tenga un / etc / hosts mal configurado creado por algunas versiones del instalador de Debian. En este caso, arregle su / etc / hosts.

Desafortunadamente, no estoy lo suficientemente familiarizado con la administración del servidor Linux como para saber exactamente qué significa todo esto :(

Jørn Schou-Rode
fuente

Respuestas:

21

Su archivo / etc / hosts debe tener al menos dos registros. El primer registro debe tener la forma:

<IP_ADDRESS> <HOST_FQDN> <HOSTNAME>

el segundo debe tener la forma:

127.0.0.1 localhost

También debe asegurarse de que su archivo / etc / hostname contenga el FQDN del servidor y que la ejecución hostname -fdevuelva el FQDN de sus servidores. Si se asegura de que todo esto es correcto y reinicia Exim, debería comenzar a verlo HELO correctamente.

Paul Lathrop
fuente
He cambiado / etc / hostname de un nombre de máquina local al FQDN. hostname -ftodavía informa "localhost". La parte sobre / etc / hosts en su respuesta parece tener errores: ¿cómo se supone que se verá el primer registro?
Jørn Schou-Rode
1
Si bien hostname -faún informa "localhost", parece que el cambio a / etc / hostname hizo el truco: ahora puedo entregar mi correo. Aunque todavía me gustaría ver la parte que falta en tu publicación :)
Jørn Schou-Rode
¡Uy! Formateo de flub. Corregido :-)
Paul Lathrop
1
/etc/hostnamenormalmente no contiene el FQDN en sistemas Debian, solo el nombre de host corto.
Josip Rodin
Bueno, la primera línea /etc/hostspodría ser 127.0.0.2 mydomain.com myhostname( 127.0.0.2funciona tan bien 127.0.0.1, ya que el loopback es una red de clase A). Probablemente pueda combinar las dos líneas en una 127.0.0.1 mydomain.com myhostname localhost, pero localhostes un nombre de host canónico para 127.0.0.1, ¿no? Todo eso dado que tiene un nombre de host, no FQDN como su nombre de host. Además, el cambio /etc/hostnameno tiene efecto de inmediato, tienes que hacerlo hostname myhostname. O reiniciar el servidor.
x-yuri
8

Si usa un solo archivo de configuración, configure la variable PRIMARY_HOST_NAME con el nombre deseado:

Por ejemplo en /etc/exim4/exim4.conf:

PRIMARY_HOST_NAME = mybox.mydomain.com

o establecer MAIN_HARDCODE_PRIMARY_HOSTNAMEen update-exim4.conf.conf si está utilizando la configuración de archivo dividido.

Para estar seguro, reinicie exim.


fuente
Solo una nota de que el host que figura en la lista no puede estar entre comillas, de lo contrario, Exim envía HELO 'mybox.mydomain.com'qué interrupciones enviando correo a Google, tal vez a otros.
mkomarinski
1
No puedo encontrar ninguna mención de este nombre de variable "PRIMARY_HOST_NAME" en la documentación. ¿Dónde encontraste esto?
Josip Rodin
En Debian tienes que correr update-exim4.confdespués de cambiar la configuración. Y reiniciar generalmente no es necesario después de eso.
x-yuri
... Bueno, eximgeneralmente parece notar los cambios en la configuración sin volver a cargar. Pero podría decirse que es más seguro recargar, ya que supongo que el demonio en sí no vuelve a leer la configuración hasta que se vuelva a cargar. Luego, haces que parezca que /etc/exim4/exim4.confpuede contener solo la línea de arriba , pero en el momento en que creas el archivo, /var/lib/exim4/config.autogeneratedse ignora ...
x-yuri
... "Los procesos bifurcados que Exim inicia para la recepción SMTP o la ejecución de la cola usarían el nuevo archivo de configuración, mientras que el exim-daemon principal original aún usaría el archivo de configuración anterior". Por lo tanto, para un archivo de configuración único es mejor usar /etc/exim4/exim4.conf.localmacros, para dividir /etc/exim4/conf.d/main/000_localmacros(los archivos en maindir se procesan primero) Y ejecuta update-exim4.conf+ systemctl reload exim4después de hacer cambios.
x-yuri
4

Se solicita el nombre de host principal durante la instalación de exim4. Puedes ejecutar el comando

sudo dpkg-reconfigure exim4-config

repasar las indicaciones nuevamente.

Hasta donde sé, si ya está utilizando la 'configuración dividida' (muchos archivos pequeños en /etc/exim4/conf.d) y opta por seguir con eso cuando se le solicite, dpkg-reconfigure no debería sobrescribir ninguno de sus modificaciones de configuración existentes que no sean las configuraciones que le solicita, pero, como siempre, primero debe hacer una copia de seguridad para estar seguro.

David North
fuente
2
Solo parece pedir un "nombre de correo [que] debería ser el nombre de dominio único y totalmente calificado (FQDN)". Sin embargo, esta configuración ya es correcta y el HELO todavía parece decir "localhost".
Jørn Schou-Rode
Lo que estamos hablando es de un nombre de correo que va a, sorpresa, sorpresa, /etc/mailname. Por defecto se usa para calificar direcciones no calificadas . Los que consisten solo en nombre de usuario. Al agregar el nombre de dominio de /etc/mailname. La dirección resultante se usa en el Fromencabezado.
x-yuri
2

La primary_hostnamevariable se completa de acuerdo con el nombre de dominio completo (FQDN) del sistema. En Debian y sistemas relacionados, esto generalmente se forma utilizando el contenido de los archivos /etc/hostnamey /etc/hosts. El archivo de nombre de host debe contener el nombre de host corto (por ejemplo foo), y el archivo de hosts debe contener una entrada que se resuelva fooen foo.bar.baz, es decir, el nombre de host con su sufijo de dominio (que normalmente coincide con una entrada de DNS).

El resultado del comando hostname(sin ningún parámetro) devolverá el primero, y el hostname -fresultado devolverá el último.

El archivo de nombre de host generalmente se llena después de la instalación, y el archivo de hosts se puede editar para tener otro registro junto a los registros de host local predeterminados; debe tener la forma:

<IP address> <hostname FQDN> <hostname>

Las tres columnas deben estar separadas por espacios o pestañas, no importa. La dirección IP puede ser 127.0.0.1 al igual que localhost, pero la parte del nombre del host coincide con el nombre del host del sistema, y ​​la parte central debe ser el FQDN, es decir, el nombre del host con un sufijo de dominio.

Para verificar que la línea funciona, simplemente ejecute hostname -fy verifique que devuelva el FQDN de su servidor.

Finalmente, reinicie Exim, por ejemplo con:

sudo service exim4 restart

Luego deberías comenzar a verlo HELO correctamente. Su variable se puede verificar ejecutando:

/usr/sbin/exim4 -bP primary_hostname

(NB: originalmente hice esto como una edición de la respuesta de 2009, pero fue rechazado. Las cosas que estaba arreglando originalmente son: no había necesidad de repetir el registro localhost predeterminado, solo explique cuál debería ser la adición; explique qué Se puede usar la dirección IP; explicar qué es FQDN; explicar cómo verificar exim en sí).

Josip Rodin
fuente
/usr/sbin/exim4 -bP primary_hostnameno funciona Puede verificar el nombre de host HELO enviando un correo electrónico de prueba al comprobador de autenticación de port25 o a cualquier otro buzón donde pueda ver el original. Más sobre esto aquí . Considera actualizar tu respuesta.
x-yuri
Funciona bien en mi máquina estable Debian (estiramiento). ¿Puedes explicar exactamente que no te funciona? Tenga en cuenta que la documentación en exim.org/exim-html-current/doc/html/spec_html/… dice claramente que el valor predeterminado helo_dataes $primary_hostname. En los sistemas Debian, puede anularlo utilizando la REMOTE_SMTP_HELO_DATAvariable, pero si solo establece su nombre de host principal correctamente, eso no es necesario.
Josip Rodin
Creo que lo intenté y se quejó de no tener una discusión. Pero no puedo reproducirlo ahora, así que no importa, mi mal. Con respecto a "si acaba de configurar su nombre de host principal correctamente", generalmente no se acepta que el nombre de host se resuelva a nada. Así que digamos "si configuras el nombre de host de la forma en que exim espera que lo hagas ..." y déjalo así :)
x-yuri
Lo siento, pero no creo que sea prudente sacar ninguna conclusión ad hoc de una larga discusión debian-devel de hace más de una década al pie de la letra. Sería más útil si señalara algún documento de política con respecto a tal cosa.
Josip Rodin
Eso es lo mejor que pude encontrar. Si puede encontrar algo mejor o una prueba de sus palabras, me alegraría que me lo dijera. Por ahora, todo lo que puedo decir es que incluso en estos días hay personas a las que no les ponen nombre de host /etc/hosts. Y todo lo que pido es no llamar a lo apropiado lo que generalmente no se acepta.
x-yuri
1

después de agregar la misma cadena en / etc / hosts, hostname -f devolverá su FQDN

myrocode
fuente
En otras palabras, myhostnameva a /etc/hostname(seguido de hostname myhostname). Y 127.0.0.1 mydomain.com myhostname.com localhostva a /etc/hosts. Más recarga por eximsi acaso.
x-yuri
0

Tengo el mismo problema. Necesito cambiar el nombre de host del correo, porque algunos correos electrónicos fallan, cuando se enviaron. Con este error:

host receiver.server.com [200.200.200.200]: 550 <[email protected]>: Sender address rejected: Domain not found

Así que lo cambio en /etc/exim.configel param primary_hostname

Algún código de este archivo:

smtp_connect_backlog = 50
smtp_accept_max = 100

#primary_hostname = myhostname.com 
deliver_queue_load_max = 3
Diego Gallardo
fuente
Ja, esta publicación me ayuda con "primary_hostname" y ahora mi exim funciona mejor que nunca :)
0

en WHM goto Exim Configuration Manager -> Editor avanzado

desplácese hacia abajo hasta encontrar "Agregar configuraciones de configuración adicionales" (un gran botón azul) y haga clic en él.

en la nueva línea, agregue [nombre_host_primero] = [midominio.com]

desplácese hasta la parte inferior y haga clic en Guardar.

Satalink
fuente