Почему postfix скопирует /etc/resolv.conf на свой chroot слишком рано, вызывая сбои DNS?

Изменить: для всех, у кого есть эта проблема, этот вопрос был действительно очень плохо спрошен / понят, и более подробное описание проблемы (и правильное решение) можно найти здесь .

Я пытаюсь настроить почту на моей Малиновой Пи. Я настроил и настроил Postfix, и все в целом работает, кроме как при загрузке, кажется, что скрипт /etc/init.d/postfix копирует файл /etc/resolv.conf в chroot до его фактического обновления. Это приводит к сбою электронной почты при возникновении проблем с DNS.

В этом сообщении в блоге есть более четкая запись, а также обходной путь (ввод сценария «sleep 5» в сценарии запуска).

Мне интересно, как / почему это происходит (и почему это, по-видимому, затрагивает только Pi или несколько человек, которых он не заметил / исправил) и где ошибка на самом деле лежит (поэтому я могу ее поднять – это постфикс, или что-то на Pi не ведет себя так, как ожидалось?).

Файл /etc/init.d/postfix имеет это в верхней части (говорит, что он полагается на сеть, не уверен, что это означает, что он не должен запускаться до того, как будет выполнено resolveconf?)

 # Provides: postfix mail-transport-agent # Required-Start: $local_fs $remote_fs $syslog $named $network $time # Required-Stop: $local_fs $remote_fs $syslog $named $network # Should-Start: postgresql mysql clamav-daemon postgrey spamassassin saslauthd dovecot # Should-Stop: postgresql mysql clamav-daemon postgrey spamassassin saslauthd dovecot # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Postfix Mail Transport Agent # Description: postfix is a Mail Transport agent 

Каков предполагаемый механизм для обеспечения этого не происходит?

3 Solutions collect form web for “Почему postfix скопирует /etc/resolv.conf на свой chroot слишком рано, вызывая сбои DNS?”

Проблема происходит из-за приоритетов. Постфикс запуска, кажется, заканчивает работу раньше, чем dhcpcd5.

Одно возможное решение для исправления /etc/resolv.conf в постфиксной тюрьме после выполнения DHCP-клиента. Я предлагаю использовать dhclient и поместить скрипт для исправления /etc/resolv.conf в каталоге /etc/dhcp/dhclient-exit-hooks.d .

Сценарии, размещенные в этом каталоге, выполняются после получения IP-адреса dhcp и эти сценарии очень полезны для принятия мер, необходимых после получения и / или изменения IP-адреса.

На самом деле у меня есть вопрос, говорящий о теме: лучший метод для изменения IP-адреса от интернет-провайдера?

Соответствующим пакетом в системе Debian является isc-dhcp-client , и если он не установлен, он может быть установлен:

 sudo apt-get install isc-dhcp-client 

Теперь необходимо изменить /etc/network/interfaces , чтобы использовать его:

 auto eth0 iface eth0 

и наконец:

 sudo dpkg --purge dhcpcd5 

Фактически, после удаления dhcpcd5 (и настройки / etc / network / interfaces вместе с @Danny) приоритеты были применены, и проблема постфикса была решена.

Тем не менее, с машинами, напрямую связанными с ISP и постоянно включенными, сценарий в dhclient-exit-hooks.d также рекомендуется, так как интернет-провайдер может вызвать изменение вашего IP-адреса.

На Ubuntu Zesty будет работать следующее:

Это исправление, вероятно, потребуется сделать после любого обновления до постфикса. Постскрипт не работает после перезагрузки, потому что он не ждет, пока сеть вернется. Это заставляет его пропустить записи в /etc/resolv.conf Предполагается скопировать их в /var/spool/postfix/etc/resolv.conf

Измените и / или добавьте следующие блоки [Unit] этих файлов systemd:

 /lib/systemd/system/postfix@.service /lib/systemd/system/postfix.service 

Добавить или изменить:

 After=network-online.target 

После внесения изменений в службу reload systemctl:

 systemctl daemon-reload reboot 

Примечание. Файл, который действительно имеет значение, – postfix @ .service

Вставка сценария в /etc/dhcp/dhclient-exit-hooks.d/ на моей малине с помощью jessie 8.0 ничего не сделала. Даже сделать его исполняемым не помогло. Кажется, что эти сценарии не запускаются.
Для меня проблема – еще один плохой пример сложности, введенной с systemd, network-manager и resolvconf.
Добавление строки в /etc/rc.local тоже не работало.
Я обнаружил, что в моей системе /etc/rc.local запускается 18 с! перед обновлением /etc/resolv.conf.
Поскольку малина находится в локальной локальной сети, я отключил механизм resolvconf, сделав /etc/resolv.conf неизменным, но даже это не помогло.
/var/spool/postfix/etc/resolv.conf теперь имеет правильные записи, но постфикс все еще не работает должным образом с записями, которые висят в mqueue, говоря «(Host или доменное имя не найдено. Ошибка службы имени для name = …. com type = MX: Host не найден, попробуйте еще раз) "
Я попытался перезагрузить постфикс с задержкой 30 секунд со следующей строкой в ​​/etc/rc.local ( sleep 30 ; service postfix restart ) &
Увы, это тоже не сработало.
Но если я зашел в систему и вручную перезапустил постфиксную почту, она будет отправлена.
Поэтому я изменил запись на
( sleep 30 ; /etc/init/postfix stop ; sleep 5 ; /etc/init/postfix start ) &
который окончательно решил проблему для меня.

  • Как заставить startx открывать новую сессию X в tty7 на малине Pi?
  • Rsync - Поврежденный MAC на входе
  • черный экран при подключении к серверу xrdp
  • `cat / dev / ttyACM` теряет данные при передаче через netcat
  • VPN SoftEther - я не могу получить доступ к VPN-серверу непосредственно с подключенного к VPN устройства
  • SSH с ключами RSA под Raspbian продолжает запрашивать парольную фразу
  • Сила отправки писем на порт 587
  • Локальная почтовая раковина
  • Помогите скомпилировать драйвер Linux для стека ТВ-карт
  • Обратный SSH - малина Pi и AWS
  • Как сказать apt-get переключиться с Sources.bz2 на Sources.gz
  • Linux и Unix - лучшая ОС в мире.