[solved] Wer schreibt in die Datei /etc/mailname?

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
Benutzeravatar
ingo2
Beiträge: 1124
Registriert: 06.12.2007 18:25:36
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Wo der gute Riesling wächst

[solved] Wer schreibt in die Datei /etc/mailname?

Beitrag von ingo2 » 18.11.2021 17:31:25

Nach dem Upgrade Buster -> Bullseye hatte ich ein Problem mit dem Mailversand von unattended-upgrades. Das Upgrade klappte problemlos, nur hat Debianexim4 die Mail dazu nicht an meine externe Mailadresse versendet, sondern "frozen". Ursache war, dass die Mail nicht in einen "SMTP-Umschlag" mit korrektem Absender verpackt wurde, weil unattended-upgrades als "Verfasser" der Mails einen falschen "hostname" verwendet hat. Es lag nicht an Debianexim4 oder der /etc/email-addresses, denn der Mailversand mit "mail" aus den BSD-mail-utils ging auf Anhieb pronblemlos.

Der Fehler lag letztlich an einem falschen Inhalt der Datei /etc/mailname. Dort war ein alter Hosatname eingetragen (old.MyDomain). Den Hostname hatte ich im 12.04.2021 noch unter Buster geändert in (new.MyDomain) und damals nach bestem Wissen alle relevanten Einträge angepasst (100% kann ich aber nicht ausschließen, die /etc/mailname vergessen zu haben).

Jetzt habe ich mir auf einem anderen nahezu gleichen System den Timestammp der /etc/mailname angesehen:

Code: Alles auswählen

LC_ALL=C stat /etc/mailname

  File: /etc/mailname
  Size: 9         	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 5155        Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2021-11-04 17:28:38.536442384 +0100
Modify: 2021-11-03 12:48:11.126894105 +0100
Change: 2021-11-03 12:48:11.126894105 +0100
 Birth: 2017-10-04 18:29:50.742841865 +0200
Auf dem System habe ich garantiert nie den Hostname geändert. Dennoch erfolgte am 2021-11-03 ein "Modify" (d.h. schreiben/ändern des Inhalts). Das war genau der Zeitpunkt des Upgrades Buster -> Bullseye.

Mein Schluß daraus:
Es muß noch irgendeine Stelle im gesamten System geben, wo der alte Hostname her stammt - wie sonst soll er in die /etc/mailname gelangen. Wenn ich wüßte, welches Paket dafür in Frage kommt, wäre schon eine große Hilfe.

Gruß,
Ingo
Zuletzt geändert von ingo2 am 20.11.2021 13:57:25, insgesamt 2-mal geändert.

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: Wer schreibt in die Datei /etc/mailname?

Beitrag von JTH » 18.11.2021 17:35:02

Um auf deine Frage im Titel zu antworten:

Code: Alles auswählen

$ grep /etc/mailname /var/lib/dpkg/info/*.p*
/var/lib/dpkg/info/exim4-config.postinst:# Edit this file and /etc/mailname by hand and execute update-exim4.conf
/var/lib/dpkg/info/exim4-config.postinst:	echo $mailname > /etc/mailname
Debianexim4-config (und vielleicht auch verwandte Pakete.)
Manchmal bekannt als Just (another) Terminal Hacker.

inne
Beiträge: 3281
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Wer schreibt in die Datei /etc/mailname?

Beitrag von inne » 18.11.2021 17:39:41

Ich meine default-mta und Co. tun das.
https://wiki.debian.org/Hostname?action=show&redirect=HowTo%2FChangeHostname#Mailname hat geschrieben: Reconfigure Exim (see above) or adjust manually /etc/mailname. You don't need to restart the service.
Bist Du zum ändern des Hostnamen dieser Anleitung gefolgt?
Sonst könnte ich mir vorstellen das Exim sich den alten Namen aus DebConf geholt hat.

Benutzeravatar
ingo2
Beiträge: 1124
Registriert: 06.12.2007 18:25:36
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Wo der gute Riesling wächst

Re: Wer schreibt in die Datei /etc/mailname?

Beitrag von ingo2 » 18.11.2021 18:33:49

Innerhalb exim4 habe ich damals den "hostname" in der update-exim4.conf.conf an 2 Stellen geändert (waren die einzigen Fundstellen):

Code: Alles auswählen

	    nano /etc/exim4/update-exim4.conf.conf
	    
		dc_eximconfig_configtype='satellite'
*		dc_other_hostnames='<old -> new>.MyDomain'
		dc_local_interfaces='127.0.0.1 ; ::1'
*		dc_readhost='<old -> new>.MyDomain'
		...
Und dann natürlich "update-exim4.conf" und "service exim4 restart" ausgeführt.
Da stehen auch jetzt immer noch die neuen hostname drin.
Sonst könnte ich mir vorstellen das Exim sich den alten Namen aus DebConf geholt hat.
Wo muss ich dann suchen, um das herauszufinden?

Ingo

Benutzeravatar
ingo2
Beiträge: 1124
Registriert: 06.12.2007 18:25:36
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Wo der gute Riesling wächst

Re: Wer schreibt in die Datei /etc/mailname?

Beitrag von ingo2 » 18.11.2021 20:19:37

Hi, hab's gefunden:

Code: Alles auswählen

debconf-show exim4-config

* exim4/mailname: <old.MyDomain>
* exim4/dc_readhost: <new.MyDomain>
* exim4/dc_other_hostnames: <new.MyDomain>
So, da hat sich der Fehler versteckt!
Und bisher alle "update-exim4.conf" ... überstanden.

Jetzt brauch ich nur noch kurz Hilfe, wie ich das korreigiere?

Ingo

Benutzeravatar
ingo2
Beiträge: 1124
Registriert: 06.12.2007 18:25:36
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Wo der gute Riesling wächst

Re: Wer schreibt in die Datei /etc/mailname?

Beitrag von ingo2 » 19.11.2021 13:06:36

Ich habe jetzt lange gesucht, aber nur wenig Brauchbares gefunden, wie ich den in der debconf-Datenbank gespeicherten "mailname" ändern kann.

So, wie ich das verstanden habe, gibt es 2 Möglichkeiten:

1. debconf-set-selections
Das fügt aber offenbar die ganze Zeile mit den Wert an die Datenbank an - mit der Folge von Duplikaten:

Code: Alles auswählen

# echo get exim4/mailname | debconf-communicate 
0 <old.MyDomain>
Das müßte ich dann mit:

Code: Alles auswählen

debconf-set-selections exim4/mailname 0 <new.MyDomain> 
setzen - sind da 2 Werte auch erlaubt?
Fügt das dann die Zeile an, oder ersetzt es die?

2. debconf-communicate
Dau gibt's als einzige verwertbare Dokumentation (für Enduser) das https://wiki.ubuntuusers.de/debconf/. Das ersetzt offenbar mit z.B.

Code: Alles auswählen

echo "set exim4/mailname <new.MyDomain>" | debconf-communicate 
Kopfzerbrechen macht mir aber die Tatsache, dass die Abfrage 2 Werte liefert, nämlich:
"0" und "old.MyDomain":

Code: Alles auswählen

echo "get exim4/mailname" | debconf-communicate 
0 apu.home
ich aber nicht weiß was die "0" zu bedeutenn hat - muß ich die auch setzen, wenn ja, wie?

Was ist mit den "Flags" wie "priority" und "gelesen" - muß ich die auch irgendwie setzen?

Bevor ich das ändere, möchte ich sicher sein, daß hinterher eine fehlerfreie konsistente Datenbank rauskommt.

Ingo

inne
Beiträge: 3281
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Wer schreibt in die Datei /etc/mailname?

Beitrag von inne » 20.11.2021 08:58:15

Hallo,

schau mal hier, der erste Wert ist ein Status Code s.u. Ich denke wenn du den Mailname über *dpkg-reconfigure* setzt ist das schon richtig und steht so auch im wiki.debian.org.

Code: Alles auswählen

# Here I define all the numeric result codes that are used.
my %codes = (
	success => 0,
	escaped_data => 1,
	badparams => 10,
	syntaxerror => 20,
	input_invisible => 30,
	version_bad => 30,
	go_back => 30,
	progresscancel => 30,
	internalerror => 100,
);
:arrow: https://salsa.debian.org/pkg-debconf/de ... nicate#L63
:arrow: https://salsa.debian.org/pkg-debconf/de ... le.pm#L227, https://salsa.debian.org/pkg-debconf/de ... le.pm#L253
:arrow: https://salsa.debian.org/pkg-debconf/de ... le.pm#L537
:arrow: https://salsa.debian.org/pkg-debconf/de ... ule.pm#L89

Benutzeravatar
ingo2
Beiträge: 1124
Registriert: 06.12.2007 18:25:36
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Wo der gute Riesling wächst

Re: Wer schreibt in die Datei /etc/mailname?

Beitrag von ingo2 » 20.11.2021 13:56:28

inne hat geschrieben: ↑ zum Beitrag ↑
20.11.2021 08:58:15
schau mal hier, der erste Wert ist ein Status Code s.u.
Danke für den Hinweis, @inne!

Habe jetzt auch noch einen Hinweis dazu (in der sonst wenig informativen) man-page von debconf-communicate gefunden:
... The textual return code of each command is printed out to standard output. ...
So etwas habe ich damit zum ersten Mal erlebt, kannte bisher nur die Abrage in Bash-Scripten mit "$?"
Damit ist für mich die Sache verstanden und ich habe die debconf-Datenbank korrigiert:

Code: Alles auswählen

Nach Backup der Datenbank /var/cache/debconf/config.dat dann den Wert modifiziert:

    echo "set exim4/mailname <new.MyDomain>" | debconf-communicate
	0 value set
gibt also auch die "0" als Return-Code/Erfolg aus
Danach ist die Dateigröße um genau 1 Byte größer geworden, um welches der neue FQDN länger als der alte ist. Auch ein Vergleich mit diff zeigt exakt die ausgetauschen 2 Strings. Auch ein Check mit

Code: Alles auswählen

echo "get exim4/mailname" | debconf-communicate
und

Code: Alles auswählen

debconf-get-selections | grep exim4/mailname
zeigt, dass alles ok ist.

P.S.: Vor dem dpkg-reconfigure exim4 dpkg-reconfigure exim4-config wollte ich mich möglichst drücken, da ich das vor Jahren das letzte Mal gemacht habe und nicht mehr alle Einstellungen, die da kommen könnten, im Kopf habe.

Ist aber auch unterm Strich eher ungewöhnlich, dass eine Anwendung eine Konfigurationsdatei unter /etc beschreibt, der häufigste Weg geht anders herum: ich schreibe die Konfiguration in /etc/* und das Programm legt die Information dann in /var ab. Auch habe ich mal auf den anderen Rechnern nachgeschaut und gesehen, dass überall eine /etc/mailname existiert und korrekt befüllt ist, obwohl ich dort garantiert nie exim4 verändert/konfiguriert habe. Das ist dann offenbar vom Installer vor Jahren mal aus den abgefragten Werten für hostname und domain abgeleitet worden.

Jedenfalls nochmal DANKE @inne für die Hilfe und auch an @JTH - jetzt weiß ich auch, wie man die Install-Scripte findet. Habe wieder viel dazugelernt!
Zuletzt geändert von ingo2 am 21.11.2021 11:59:18, insgesamt 1-mal geändert.

inne
Beiträge: 3281
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: [solved] Wer schreibt in die Datei /etc/mailname?

Beitrag von inne » 21.11.2021 07:48:07

Solved, das ist schön. Aber for the record:

Das Paket 📦 wäre exim4-config, also dpkg-reconfigure exim4-config und die alten Werten können einfach mit Enter abgnickt werden, wobei du vlt. doch vieles an DebConf vorbei eingestellt hast...

Nur ein Flüchtigkeisfeher beim beitragschreiben?

MfG,

Benutzeravatar
ingo2
Beiträge: 1124
Registriert: 06.12.2007 18:25:36
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Wo der gute Riesling wächst

Re: [solved] Wer schreibt in die Datei /etc/mailname?

Beitrag von ingo2 » 21.11.2021 12:02:45

inne hat geschrieben: ↑ zum Beitrag ↑
21.11.2021 07:48:07
Nur ein Flüchtigkeisfeher beim beitragschreiben?
:hail: Sorry, ja!
Sofort oben korrigiert.

Was ich jetzt noch in einer VM probiert und herausgefunden habe:
Debianexim4 installiert.
Ein Check des Inhalts von /etc/mailname -> hostname.domain wie bei Installation des gesamten Systems.
Eintrag in der debconf-Datenbank ebenmfalls korrekt hostname.domain

Jetzt den Datenbank-Eintrag mit debconf-communicate geändert, dann
dpkg-reconfigure exim4-config durchgegangen.
Es werden nach wie vor die Default-Werte wie nach der Installation angeboten. der geänderte Datenbankwert taucht nirgends auf. Der wird offenbar nur für eine Neuinstallation des Paketes wie beim Upgrade Buster -> Bullseye verwendet/abgefragt!

Auch hat der Datenbankwert das Flag "seen" (gelesen) und wird eigentlich ausgeblendet, was man mit dem Befehl debconf-show exim4-config am "*" am Zeilenanfang erkennt.

Ingo

Antworten