linux

Yum-Cron sendet keine Emails mehr

Vor einiger Zeit hatte ich gezeigt, wie man CentOS mittels Yum-Cron automatisch updaten kann. Natürlich verwende ich diesen Setup selbst und habe mich gewundert, warum ich seit einiger Zeit nur noch von einem Teil meiner Server per Email benachrichtigt werde, wenn Updates durchgeführt wurden. Jetzt habe ich mir die Zeit genommen einmal genauer nachzusehen.

Ein Blick in das Logfile von Yum brachte keine Klärung, denn alle Updates werden anstandslos ausgeführt. Der nächste Verdacht war der Mailserver aber auch hier lag die Ursache nicht. Allerdings fand ich in der Mailbox Emails von Anacron, die folgende Meldung enthalten:

/etc/cron.daily/0yum-daily.cron:

Traceback (most recent call last):
  File "/usr/sbin/yum-cron", line 711, in <module>
    main()
  File "/usr/sbin/yum-cron", line 708, in main
    base.updatesCheck()
  File "/usr/sbin/yum-cron", line 631, in updatesCheck
    self.installUpdates(self.opts.update_messages)
  File "/usr/sbin/yum-cron", line 582, in installUpdates
    self.emitMessages()
  File "/usr/sbin/yum-cron", line 694, in emitMessages
    map(lambda x: x.sendMessages(), self.emitters)
  File "/usr/sbin/yum-cron", line 694, in <lambda>
    map(lambda x: x.sendMessages(), self.emitters)
  File "/usr/sbin/yum-cron", line 227, in sendMessages
    msg = MIMEText(''.join(self.output))
  File "/usr/lib64/python2.7/email/mime/text.py", line 30, in __init__
    self.set_payload(_text, _charset)
  File "/usr/lib64/python2.7/email/message.py", line 226, in set_payload
    self.set_charset(charset)
  File "/usr/lib64/python2.7/email/message.py", line 262, in set_charset
    self._payload = self._payload.encode(charset.output_charset)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 207-208: ordinal
not in range(128)

Kein Yum-Cron Problem per se

Es handelt sich also um ein Problem mit dem Encoding durch Python, welches als Standard Ascii verwendet und nicht UTF8. Aber was hat sich geändert? Warum bekomme ich die Meldungen von Yum-Cron weiterhin von einigen Servern und von anderen nicht? Als Vorbereitung für meinen Umzug von Erkrath nach Krefeld habe ich auch meine Server konsolidiert. Im Zuge dessen habe ich neue virtuelle Maschinen mit Centos 7 aufgesetzt und die Nginx bzw. Apache Konfigurationen übertragen. Da einige meiner Kunden kein Deutsch sprechen bzw. lesen können, habe ich die Entwicklungssysteme auf Englisch eingestellt, sodass die Datei /etc/locale.conf folgenden Eintrag enthält:

LANG="en_US.UTF-8"

Auf allen anderen Systemen lautet der Eintrag:

LANG="de_DE.UTF-8"

Und genau hier liegt das Problem. Von den „englischen“ Systemen erhalte ich die Emails, von den „deutschen“ nicht. Grundsätzlich habe ich kein Problem damit alle Server in englischer Sprache zu betreiben, dennoch halte ich es für einen Fehler, wenn ein Programm nur in einer Sprache läuft. Das ist ähnlich wie bei Plugins und Themes für WordPress, wenn diese nicht für die Übersetzung vorbereitet sind.

Nach einer kurzen Suche habe ich entdeckt, dass für dieses Problem bereits ein Bugreport bei Red Hat erstellt wurde und der Autor auch gleich einen Patch mitliefert. Dazu wird Zeile 227 in der Datei /usr/sbin/yum-cron bearbeitet, aus

msg = MIMEText(''.join(self.output))

wird

msg = MIMEText(''.join(self.output), "plain", "utf-8")

Warum der Patch von Februar bis Juli noch immer nicht offiziell eingespielt wurde ist mir ein Rätsel, denn er funktioniert einwandfrei und seit der Änderung bekomme ich auch wieder alle Emails. Bis Red Hat eine dauerhafte Lösung des Problems vornimmt, müssen Anwender also entweder die Sprache des Systems ändern oder den Patch für Yum-Cron einspielen. Alternativ könnte man aber auch das Standard-Encoding von Python ändern und zwar auf die des Systems anstatt auf Ascii. Da ich das aber noch nicht getestet habe und daher nicht weiß welche Auswirkungen das auf andere Python Programme hat, belasse ich es derzeit bei dem Patch.

 

WordPress Experte und SpezialistAls WordPress Entwickler mit 13 Jahren Erfahrung unterstütze ich Unternehmer bei der Erstellung von Applikationen und Webseiten auf der Basis von WordPress. Als WooCommerce Spezialist konzentriere ich mich auf e-Commerce Anwendungen mit WordPress. Auf meiner Know-How Seite erfahren Sie mehr über mich.

Dieser Beitrag ist älter als 6 Monate. Die enthaltenen Informationen sind möglicherweise nicht mehr gültig!