[Eisfair] E1 DNS-Namensauflösung in mail-Paket schlägt fehl

Jürgen Witt j-witt at web.de
Do Apr 21 06:15:49 CEST 2016


Hallo Marcus,

Am 20.04.2016 um 19:13 schrieb Marcus Roeckrath:
> Hallo Jürgen,
>
> Ich glaube, ich weiß es jetzt.
> 
> /var/log hat die Rechte 0755!
> 
> Damit scheitert vermutlich das Anlegen der Datei.

stimmt.

> touch /var/log/dns-ok.log
> chown exim.trusted /var/log/dns-ok.log

genau, so habe ich es jetzt gemacht.

> machst, könnte es dann ohne sudo Klimmzüge gehen.

doch, es braucht das volle Programm.

Ohne entsprechende Änderungen in /etc/sudoers.d/fetchmail-dns-ok

Sieht es so aus

fetchmail: awakened at Thu, 21 Apr 2016 05:40:42 (CEST)
fetchmail: sleeping at Thu, 21 Apr 2016 05:40:49 (CEST) for 300 seconds

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

sudo: no tty present and no askpass program specified


Nach der Änderung der /etc/sudoers.d/fetchmail-dns-ok in

exim ALL = NOPASSWD: /etc/init.d/mail
exim ALL = NOPASSWD: /bin/date
exim ALL = NOPASSWD: /bin/ping
exim ALL = NOPASSWD: /usr/bin/nslookup


wird die log-Datei /var/log/dns-ok.log beschrieben und der Neustart von
fetchmail (das ging ja nun vorher auch schon) klappt auch.

Ich habe das Abholintervall auch wieder auf 5 Min. gestellt. Wenn jetzt
fetchmail den Server beim Abholversuch nicht mehr findet, wird meine
log-Datei beschrieben (date, ping, nslookup) und fetchmail neu gestartet.

Dein Script sieht jetzt bei mir so aus.

#!/bin/sh
fetch_log="/var/log/fetchmail.log"
# extract log lines of last fetchmail call only
last_fetch_line=$(grep -n  'awakened at' ${fetch_log} | tail -n 1 | cut
-d':' -f1)
# echo $last_fetch_line
last_fetch_entry=$(sed -n "${last_fetch_line},\$p" ${fetch_log})
# echo $last_fetch_entry
# check if error error appeared
dns_error=$(echo "${last_fetch_entry}" | grep 'Name or service not
known' | cut -d ' ' -f2 | sort -u)
# Nur zum Testen wird die Suchzeile auf awakened gesetzt, weil immer da
# dns_error=$(echo "${last_fetch_entry}" | grep 'awakened' | cut -d ' '
-f2 | sort -u)
# echo $dns_error
if [ -n "${dns_error}" ] ; then
  sudo /bin/date >> /var/log/dns-ok.log
  sudo /bin/ping -c 4 mail.speedpartner.de >> /var/log/dns-ok.log
  sudo /usr/bin/nslookup mail.speedpartner.de >> /var/log/dns-ok.log
  sudo /etc/init.d/mail restart fetch
fi

Danke für Deine Hilfe
Jürgen


Mehr Informationen über die Mailingliste Eisfair