Як змінити ім'я основного_імен Exim4 у вікні Debian?


24

Якийсь віддалений сервер SMTP я намагаюся доставити пошту, щоб відмовитись приймати HELO від свого сервера:

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

Мабуть, мій сервер Exim4 надсилає localhostяк FQDN. Шукаючи мережу та купу конфігураційних файлів, я дізнався, що значення, надіслане як FQDN під час HELO, черпається із primary_hostnameзмінної конфігурації.

Моє запитання: який правильний спосіб зміни цієї змінної в системі Debian? Я думаю, що я можу просто зафіксувати значення файлів конфігурації Exim4, але IMHO, мабуть, матиме більше сенсу, якби значення автоматично відповідало /etc/mailnameчи іншому конфігурації централізованого імені.

У мене є відчуття, що відповідь на моє запитання можна знайти в цьому тексті з вікі Debian :

Ім'я, яке використовує Exim в EHLO / HELO, виведене з параметра налаштування primary_hostname. Конфігурація за замовчуванням у Debian не встановлена primary_hostname. Тоді Exim за замовчуванням значить Uname (), щоб знайти ім'я хоста. Якщо цей виклик повертає лише один компонент, для отримання повноцінного імені хоста використовується gethostbyname () або getipnodebyname ().

Якщо ваші Exim HELO в якості localhost.localdomain, то, швидше за все, ви неправильно налаштували / etc / hosts, створені деякими версіями інсталятора Debian. У цьому випадку виправте / etc / hosts.

На жаль, я недостатньо знайомий з адміністрацією сервера Linux, щоб точно знати, що все це означає :(

Відповіді:


21

Ваш / etc / hosts файл повинен мати принаймні два записи у ньому. Перший запис повинен мати форму:

<IP_ADDRESS> <HOST_FQDN> <HOSTNAME>

другий має бути такої форми:

127.0.0.1 localhost

Вам також потрібно переконатися, що файл / etc / hostname містить FQDN сервера і що запущений hostname -fфайл повертає FQDN ваших серверів. Якщо ви переконаєтесь, що все це правильно, і перезапустіть Exim, ви повинні почати правильно бачити його.


Я змінив / etc / hostname з локальної назви машини на FQDN. hostname -fяк і раніше повідомляє "localhost". Частина про / etc / hosts у вашій відповіді здається баггі - як має виглядати перший запис?
Jørn Schou-Rode

1
Поки hostname -fще повідомляється про "localhost", схоже, що зміна на / etc / hostname зробила свою справу - я можу зараз доставити свою пошту. Я все-таки хотів би побачити пропущену частину вашого допису :)
Jørn Schou-Rode,

На жаль! Форматування клубу. Виправлено :-)
Пол Латроп

1
/etc/hostnameзазвичай не містить FQDN в системах Debian, лише коротке ім'я хоста.
Йосип Родін

Ну, /etc/hostsможе бути перший рядок у 127.0.0.2 mydomain.com myhostname( 127.0.0.2працює так само добре 127.0.0.1, оскільки циклічне відтворення - це мережа класу A). Напевно, ви можете поєднати два рядки в один 127.0.0.1 mydomain.com myhostname localhost, але localhostце канонічне ім'я хоста 127.0.0.1, чи не так? Це все з огляду на те, що у вас є ім'я хоста, а не FQDN як ваше ім'я хоста. Крім того, зміна /etc/hostnameне набирає чинності відразу, ви повинні hostname myhostname. Або перезапустити сервер.
x-yuri

8

Якщо ви використовуєте один файл конфігурації, встановіть змінну PRIMARY_HOST_NAME на потрібне ім'я:

Наприклад у /etc/exim4/exim4.conf:

PRIMARY_HOST_NAME = mybox.mydomain.com

або встановити MAIN_HARDCODE_PRIMARY_HOSTNAMEв update-exim4.conf.conf, якщо ви використовуєте розділену конфігурацію файлів.

Щоб забезпечити безпеку, перезапустіть exim.


Лише зауважте, що перелічений хост не може бути в лапках, інакше екзим надсилає, HELO 'mybox.mydomain.com'що порушує відправлення пошти в Google, можливо, інші.
mkomarinski

1
Я не можу знайти жодної згадки про цю змінну імені "PRIMARY_HOST_NAME" в документації. Де ти це знайшов?
Йосип Родін

У Debian вам доведеться запуститись update-exim4.confпісля зміни конфігурації. І перезапуск, як правило, не потрібен після цього.
x-yuri

... Ну, eximзвичайно, здається, помічають зміни в конфігурації без перезавантаження. Але це, можливо, безпечніше для перезавантаження, оскільки я вважаю, що сам демон не читає конфігурацію до перезавантаження. Тоді ви здаєтеся, що це /etc/exim4/exim4.confможе містити рядок вище , але в момент, коли ви створюєте файл, /var/lib/exim4/config.autogeneratedігнорується ...
x-yuri

... "Розроблені процеси Exim запускаються для отримання SMTP або запуску черги використовує новий файл конфігурації, тоді як початковий головний exim-daemon все ще використовуватиме старий файл конфігурації." Отже, для одного файлу конфігурації найкраще використовувати /etc/exim4/exim4.conf.localmacrosдля розділення /etc/exim4/conf.d/main/000_localmacros(файли в maindir обробляються спочатку). І запустіть update-exim4.conf+ systemctl reload exim4після внесення змін.
x-yuri

4

Під час встановлення exim4 буде запропоновано основне ім'я хоста. Ви можете запустити команду

sudo dpkg-reconfigure exim4-config

знову пройти підказки.

Наскільки я знаю, якщо ви вже використовуєте "розділену конфігурацію" (багато маленьких файлів під /etc/exim4/conf.d) і вирішите дотримуватися цього, коли запит, dpkg-конфігурація не повинен перезаписувати жодне з Ваші існуючі зміни конфігурації, окрім налаштувань, про які Ви вимагаєте, але, як ніколи, спершу Вам слід зробити резервну копію, щоб бути безпечною.


2
Здається, лише запитують "ім'я пошти [яке] має бути єдиним, повністю кваліфікованим доменним іменем (FQDN)". Однак цей параметр уже правильний, і HELO як і раніше каже "localhost".
Jørn Schou-Rode

Те , що ви говорите це ім'я пошти , який йде, сюрприз, сюрприз, /etc/mailname. За замовчуванням він використовується для визначення некваліфікованих адрес . Ті, які складаються лише з імені користувача. Додавши доменне ім’я від /etc/mailname. Отримана адреса використовується в Fromзаголовку.
х-юрі

2

primary_hostnameМінлива заповнюється в відповідно до повним доменним ім'ям (FQDN) системи. У Debian і суміжних системах це зазвичай формується за допомогою вмісту файлів /etc/hostnameта /etc/hostsфайлів. Файл повинен містити ім'я хоста коротке ім'я хоста (наприклад foo), і хост - файл повинен містити запис роздільну fooв foo.bar.baz, тобто ім'я хоста з його суфікс домену (зазвичай відповідний запис DNS).

Вихід з команди hostname(без будь-яких параметрів) поверне перше, а hostname -fвихід поверне другий.

Файл імені хоста зазвичай заповнюється після встановлення, і файл хостів може бути відредагований таким чином, щоб він містив в ньому ще одну запис поруч із записами за замовчуванням localhost - він повинен мати форму:

<IP address> <hostname FQDN> <hostname>

Три стовпці повинні бути розділені пробілами або вкладками, це не має значення. IP-адреса може бути 127.0.0.1 так само, як localhost, але частина імені узла відповідає системному імені хоста, а середня частина повинна бути FQDN, тобто ім'я хоста з суфіксом домену.

Щоб перевірити, чи працює лінія, просто запустіть hostname -fі перевірте, чи повертає вона FQDN вашого сервера.

Нарешті, перезапустіть Exim, наприклад, за допомогою:

sudo service exim4 restart

Після цього слід почати правильно бачити його HELO. Його змінну можна перевірити, запустивши:

/usr/sbin/exim4 -bP primary_hostname

(Примітка: Спочатку я робив це як редагування відповіді з 2009 року, але її відхилено. Речі, які я спочатку виправляв: не потрібно було повторювати за замовчуванням запис localhost, просто поясніть, яким має бути додавання; поясніть, яке IP-адресу можна використовувати; поясніть, що таке FQDN; поясніть, як перевірити сам exim.)


/usr/sbin/exim4 -bP primary_hostnameне працює. Ви можете перевірити ім'я хоста HELO, надіславши пробне повідомлення електронною поштою на перевірку аутентифікації port25 або будь-яку іншу поштову скриньку, де ви можете бачити оригінал. Детальніше про це тут . Подумайте про оновлення своєї відповіді.
x-yuri

Це добре працює на моїй стабільній машині Debian (стрейч). Чи можете ви поясніть, чи точно це не працює для вас? Зверніть увагу, що документація на exim.org/exim-html-current/doc/html/spec_html/… чітко говорить про те, що за замовчуванням helo_dataє $primary_hostname. У системах Debian ви можете змінити його за допомогою REMOTE_SMTP_HELO_DATAзмінної, але якщо ви просто встановили своє основне ім'я хоста, це не обов'язково.
Йосип Родін

Я вважаю, що я намагався, і він скаржився на те, що не брав аргументи. Але зараз не можу відтворити це, так що не забувайте, мій поганий. Що стосується "якщо ви просто встановили основне ім'я хоста належним чином", загальновизнано, що ім'я хоста має вирішуватись будь-чим. Тож скажімо, "якщо ви встановите ім'я хоста так, як очікує, що вас очікує ...", і залиште це при цьому :)
x-yuri

Вибачте, але я не думаю, що розумно приймати будь-який спеціальний висновок тривалої дискусії Debian, розробленої більше десяти років тому, за номінал. Було б корисніше, якби ви вказали на якийсь політичний документ щодо такого.
Йосип Родін

Це найкраще, що я міг знайти. Якщо ви зможете знайти щось краще або підтвердження своїх слів, я буду радий, якщо ви скажете мені. На сьогодні я можу сказати лише те, що навіть в наші дні є люди, які не ставлять ім'я хоста /etc/hosts. І все, що я прошу, - це не називати належним те, що не прийнято.
x-yuri

1

після додавання тієї ж строки в / etc / hosts, ім'я хоста -f поверне ваш FQDN


Іншими словами, myhostnameпереходить до /etc/hostname(далі hostname myhostname). І 127.0.0.1 mydomain.com myhostname.com localhostйде до /etc/hosts. Плюс перезавантажте про eximвсяк випадок.
х-юрі

0

У мене така ж проблема. Мені потрібно змінити ім'я хоста пошти, оскільки деякі листи виходять з ладу під час надсилання. Ця помилка:

host receiver.server.com [200.200.200.200]: 550 <info@sender.server.com>: Sender address rejected: Domain not found

Тож я змінюю його на /etc/exim.configім'я param basic_hostname

Код цього файлу:

smtp_connect_backlog = 50
smtp_accept_max = 100

#primary_hostname = myhostname.com 
deliver_queue_load_max = 3

Так, ця публікація допомагає мені з "basic_hostname", і тепер мій exim працює краще, ніж будь-коли :)

0

у WHM перейдіть до Exim Configuration Manager -> Advanced Editor

прокрутіть вниз, доки не знайдете "Додати додаткові параметри конфігурації" (велика синя кнопка) та натисніть на неї.

у новому рядку додайте [Primary_hostname] = [mydomain.com]

прокрутіть донизу та натисніть Зберегти.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.