Ich versuche derzeit, mein kleines E-Mail-Sende-Skript (das verwendet Python 3.x und python-gnupg -Modul).
Der Code, der die Nachricht signiert, lautet:
%Vor% ( basemsg
entspricht dem Typ email.message.Message
.)
Und messageFromSignature
Funktion ist:
Dann füge ich alle benötigten Header zur Nachricht hinzu ( msg
) und sende sie.
Dies funktioniert gut für nicht mehrteilige Nachrichten, schlägt jedoch fehl, wenn basemsg
mehrteilig ist ( multipart/alternative
oder multipart/mixed
).
Manuelles Überprüfen der Signatur gegen das entsprechende Stück Text funktioniert, aber Evolution und Mutt melden, dass die Signatur schlecht ist.
Kann mir bitte jemand auf meinen Fehler hinweisen?
Das Problem ist, dass Pythons email.generator
-Modul vor dem Signaturteil keinen Zeilenumbruch hinzufügt. Ich habe das Upstream als Ссылка gemeldet.
Was ist eigentlich die MIME-Struktur von basemsg
? Es scheint, dass es zu viele verschachtelte Teile darin hat. Wenn Sie eine signierte Nachricht von z. Evolution, du wirst sehen, dass es nur zwei Teile hat: den Körper und die Signatur.
Hier ist ein Beispiel, das eine Nachricht auf stdout erzeugt, die gelesen werden kann und die Signatur sowohl für mutt ( mutt -f test.mbox
) als auch Evolution (Datei - & gt; Import) verifiziert hat.
Beachten Sie, dass hier ein Schlüsselring mit einer Passphrase angenommen wird, aber Sie brauchen das nicht.
Es gibt viel mehr Probleme mit der integrierten Python-Bibliothek email
.
Wenn Sie die Prozedur as_string
aufrufen, werden die Header nur in der aktuellen Klasse nach maxlinelength
und in den Childs ( _payload
) nicht durchsucht! So:
Ich habe msgMix.to_string()
unterzeichnet und dann die signierte Nachricht an die msgRoot
angehängt. Beim Senden an SMTP war der msgMix
-Teil jedoch anders, die Header in msgMix
wurden nicht verschoben. Ofc, das Zeichen war ungültig.
Es hat zwei Tage gedauert, bis ich alles verstanden habe. Hier ist mein Code, der funktioniert und ich benutze ihn für das Senden von automatischen E-Mails:
%Vor%Ich würde gerne Spenden annehmen:
Ethereum: 0x610E3B4e804b367c182c5FC4D65d09c089723389
BTC: 1iFA88LxbGYpVgis6v6PzN8JeV1C58wJd
Tags und Links python email gnupg digital-signature pgp