Un serveur SMTP distant J'essaie de livrer le courrier à refuser d'accepter l'HELO de mon serveur:
504 5.5.2 <localhost>: Helo command rejected: need fully-qualified hostname
Apparemment, mon serveur EXIM4 envoie localhost
comme son FQDN. Recherche sur le net et un groupe de fichiers de configuration, j'ai appris que la valeur envoyée sous la forme de FQDN pendant HELO est tirée du primary_hostname
variable de configuration.
Ma question est la suivante: quel est le correct de changer cette variable dans un système Debian? Je suppose que je peux simplement coder une valeur sur les fichiers de configuration EXIM4, mais IMHO il semblerait avoir plus de sens si la valeur automatiquement correspond à /etc/mailname
ou un autre nom de nom centralisé.
J'ai un sentiment que la réponse à ma question peut être trouvée dans ce texte à partir de le Wiki Debian :
Le nom utilisé par Exim dans EHLO/HELO est tiré de l'option de configuration
primary_hostname
. La configuration par défaut EXIM4 de Debian n'est pas définieprimary_hostname
. EXIM puis par défaut à UNAME () pour rechercher le nom d'hôte. Si cet appel ne renvoie qu'un composant, GetHostByName () ou GeIpnodeByName () est utilisé pour obtenir le nom d'hôte complet.Si votre exim heelos en tant que localhost.localomain, vous avez probablement très probablement un malfiguré/etc/hôte créé par certaines versions du programme d'installation de Debian. Dans ce cas, veuillez corriger vos/etc/hôtes.
Malheureusement, je ne suis pas assez familier avec Linux Server Administration pour connaître Exacrement ce que tout cela signifie :(
Votre fichier/etc/hosts doit avoir au moins deux enregistrements. Le premier enregistrement doit être de la forme:
<IP_ADDRESS> <Host_FQDN> <HOSTNAME>
le second devrait être de la forme:
127.0.0.1 localhost
Vous devez également vous assurer que votre fichier/etc/hostname contient le FQDN du serveur, et que fonctionnant hostname -f
Retourne vos serveurs FQDN. Si vous vous assurez que tout cela est correct et que vous redémarrez EXIM, vous devriez commencer à le voir Helo correctement.
Si vous utilisez un seul fichier de configuration, définissez la variable principale_host_name sur le nom souhaité:
Par exemple dans /etc/exim4/exim4.conf:
PRIMARY_Host_NAME = mybox.mydomain.com
ou ensemble MAIN_HARDCODE_PRIMARY_HOSTNAME
Dans update-exim4.conf.conf si vous utilisez la configuration de fichier fractionnée.
Pour être en sécurité, redémarrez EXIM.
Le nom d'hôte principal est invité à l'installation de EXIM4. Vous pouvez exécuter la commande
Sudo dpkg-reconfigure exim4-config
passer à nouveau sur les invites.
Aussi loin que je sache, si vous utilisez déjà la "configuration fractionnée" (beaucoup de petits fichiers sous /etc/exim4/conf.d) et choisissez de vous en tenir à cela lorsque vous y êtes invité, DPKG-Reconfigure ne doit pas écraser l'un des Vos modifications de configuration existantes autres que les paramètres qu'il vous invite, mais comme toujours, vous devez d'abord prendre une sauvegarde pour être en sécurité.
Les primary_hostname
La variable est remplie en fonction du nom de domaine entièrement qualifié (FQDN) du système. Sur Debian et des systèmes connexes, il est généralement formé en utilisant le contenu de la /etc/hostname
et /etc/hosts
des dossiers. Le fichier nom d'hôte doit contenir le nom d'hôte court (E.G. foo
), et le fichier d'hôtes doit contenir une entrée de résolution foo
dans foo.bar.baz
, c'est-à-dire un nom d'hôte avec son suffixe de domaine (correspondant normalement à une entrée DNS).
La sortie de la commande hostname
(sans aucun paramètre) retournera le premier et le hostname -f
La sortie reviendra ce dernier.
Le fichier d'hostname est généralement rempli lors de l'installation et le fichier d'hosts peut être modifié pour avoir un autre enregistrement de celui-ci à côté des enregistrements localHost par défaut - il devrait être du formulaire:
<IP address> <hostname FQDN> <hostname>
Les trois colonnes doivent être séparées par des espaces ou des onglets, peu importe. L'adresse IP peut être 127.0.0.1 Juste comme localhost, mais la partie nom d'hôte correspond au nom d'hôte système, et la partie centrale doit être la FQDN, c'est-à-dire un nom d'hôte avec un suffixe de domaine.
Pour vérifier la ligne fonctionne, il suffit de courir hostname -f
Et vérifiez qu'il renvoie la FQDN de votre serveur.
Enfin, redémarrez EXIM, par exemple avec:
Sudo service exim4 restart
Ensuite, vous devriez commencer à le voir helo correctement. Sa variable peut être vérifiée en courant:
/usr/sbin/exim4 -bP primary_hostname
((NB: Je l'ai initialement fait comme étant une modification à la réponse à partir de 2009, mais elle a été rejetée. Les choses que je faisais à l'origine sont: il n'était pas nécessaire de répéter l'enregistrement localHost par défaut, expliquez simplement ce que l'addition devrait être; expliquer quelle adresse IP peut être utilisée; expliquer ce qu'est CQDN; expliquez comment vérifier exim lui-même.
après avoir ajouté la même chaîne dans/etc/hosts, Hostname -f retournera votre FQDN
J'ai le même problème. Je dois changer le nom d'hôte de messagerie, car certains courriels échouent, quand ils ont été envoyés. Avec cette erreur:
Host receiver.server.com [200.200.200.200]: 550 <[email protected]>: Sender address rejected: Domain not found
Donc je le change dans le /etc/exim.config
le param primaire_hostname
Quelque code de ce fichier:
smtp_connect_backlog = 50
smtp_accept_max = 100
#primary_hostname = myhostname.com
deliver_queue_load_max = 3
dans Whm Goto Exim Configuration Manager -> Editeur avancé
faites défiler jusqu'à ce que vous trouviez "Ajouter des paramètres de configuration supplémentaires" (un gros bouton bleu) et cliquez dessus.
dans la nouvelle ligne, ajoutez [primaire_hostname] = [mydomain.com]
faites défiler vers le bas et cliquez sur Enregistrer.