Aktualisierung auf Bullseye (11.0)

In den letzten Wochen ist die neue Debian Version Bullseye freigegeben worden. Der neue Kernel 5.10 unterstützt aktuelle Hardware besser. Natürlich haben sich auch bei den Softwarepaketen einige Änderungen ergeben. Meine Erfahrungen und Lösungsvorschläge möchte ich hier anführen.

Die Aktualisierung funktioniert nur, wenn das System bereits mit einer Version von Buster läuft. Eine Aktualisierung aus älteren Versionen ist nicht möglich. Empfohlen ist, das laufende Betriebssystem auf den aktuellen Stand zu bringen.

Zuerst ersetzt man in der Datei /etc/apt/sources.list alle Vorkommen von buster durch bullseye. Die Sicherheitsaktualisierungen werden nicht vom Repository bullseye/updates, sondern von bullseye-security bezogen. Die folgenden Befehle erneuern die Paketquellen und aktualisieren das System minimal.

apt-get update
apt-get upgrade

Je nach Netzanbindung und der installierten Software müssen 400-1.100 MByte geladen werden. Die meisten Pakete werden automatisch installiert, bei einigen ist Nacharbeit nötig. Im nächsten Schritt erfolgt die Aktualisierung der restlichen Komponenten.

apt-get dist-upgrade

Danach fehlt nur noch der obligatorische Neustart sowie das Nachbearbeiten von einigen Konfigurationsdateien.

Aktualisierung des Mailservers exim4

Bei der Aktualisierung von exim4 ist einiges zu beachten. So werden alle Daten, die z.B. aus dem Empfänger einer Email stammen, als beschmutzt angesehen. Die Aktualisierung der Konfiguration ist nicht trivial, abhängig davon, wie komplex die Ausgangssituation war. Ich habe meine Konfiguration neu erstellt und gleichzeitig die Ordnerstruktur angepasst.

Anpassung Ordnerstruktur

Unter buster war in dem Verzeichnis /etc/exim4/virtual für jede Domain eine Datei mit den Aliasen angelegt, also die Zuordnung von dem Teil, welcher vor dem @-Zeichen steht und dem lokalen Nutzer. In bullseye befindet sich für jede Domain ein Verzeichnis im Ordner /etc/exim4/domains/. Jedes Unterverzeichnis enthält jetzt die Datei aliases mit den Zuordnungen. Weiterhin werden dort die DKIM-Schlüsel abgelegt, damit ausgehende Emails signiert sind.

Die Datei /etc/exim4/exim4.conf.localmacros muss natürlich angepasst werden. Ich führe hier nur die DKIM-Anpassung auf, die sich auf Grund der neuen Ordnerstruktur ergeben.

DKIM_DOMAIN = ${lc:${domain:$h_from:}}
DKIM_FILE = /etc/exim4/domains/${lookup{${lc:${domain:$h_from:}}}dsearch{/etc/exim4/domains/}}/dkim.pem
DKIM_PRIVATE_KEY = ${if exists{DKIM_FILE}{DKIM_FILE}{0}}

DKIM_SELECTOR = mail
DKIM_CANON = relaxed

Weitere Anpassungen habe ich in der Datei /etc/exim4/exim4.conf.template vorgenommen.

CHECK_RCPT_VERIFY_SENDER = yes
CHECK_DATA_VERIFY_HEADER_SENDER = yes
CHECK_RCPT_REVERSE_DNS = yes

...

### router/300_exim4-config_real_local
#################################

# This router allows reaching a local user while avoiding local
# processing. This can be used to inform a user of a broken .forward
# file, for example. The userforward router does this.

COND_LOCAL_SUBMITTER = "\
               ${if match_ip{$sender_host_address}{:@[]}\
                    {1}{0}\
                }"

real_local:
  debug_print = "R: real_local for $local_part@$domain"
  driver = accept
  domains = +local_domains
  condition = COND_LOCAL_SUBMITTER
  local_part_prefix = real-
  check_local_user
  transport = LOCAL_DELIVERY

#hier ergänzt bzw. aktualisiert
large_messages:
  driver = accept
  domains = dsearch;/etc/exim4/domains/
  condition = ${if >{$message_size}{${expand:${lookup{$domain}lsearch*@{/etc/exim4/domain-size-limits}}}} {yes}{no}}
  transport = bounce_large_messages
  no_verify

vdom_aliases:
  driver = redirect
  allow_defer
  allow_fail
  #domains = dsearch;/etc/exim4/domains/
  domains = +local_domains
  #data = ${lookup{$local_part}lsearch{/etc/exim4/$domain_data/aliases}}
  #local_parts = lsearch;$domain_data
  #data = ${extract{1}{:}{${lookup{$local_part@$domain}lsearch{/etc/exim4/domains/${lookup{$domain}dsearch{/etc/exim4/domains/}}/aliases}}}}
  data = ${lookup{$local_part}lsearch{/etc/exim4/domains/$domain_data/aliases}}
  require_files = /etc/exim4/domains/$domain/aliases
  retry_use_local_part
  pipe_transport   = address_pipe
  file_transport   = address_file
  no_more

Aufräumarbeiten

Nach dem Neustart des Systems ist es zu empfehlen, Konfigurationsdateien entfernter Pakete sowie veraltete Pakete zu entfernen. Der einfachste Weg ist es, dazu den Paketmanager zu verwenden.

aptitude search '~c'
aptitude purge '~c'

Der folgende entfernt alle veralteten Pakete, u.a. auch das beliebte phpmyadmin.

aptitude search '~o'
aptitude purge '~o'