Changes for page Mailversand von selbst programmierten Scripten oder selbst installierter Spezialsoftware
Last modified by Christoph Bußenius on 2025/02/05 12:20
From version 6.1
edited by Christoph Bußenius
on 2024/12/09 10:42
on 2024/12/09 10:42
Change comment:
There is no comment for this version
To version 14.1
edited by Christoph Bußenius
on 2024/12/09 11:34
on 2024/12/09 11:34
Change comment:
There is no comment for this version
Summary
-
Page properties (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -6,7 +6,7 @@ 6 6 7 7 == Verbindungsdaten == 8 8 9 -Wenn es in einer Ubuntu-VM im ESX der ITO ist oder einer ähnlich installierten Linux-Installation:9 +Wenn es in einer Ubuntu-VM im ESX der ITO ist oder einer ähnlichen Linux-Installation: 10 10 11 11 * SMTP-Server: localhost 12 12 * Port: 25 ... ... @@ -20,7 +20,7 @@ 20 20 * Port: 587 (oder 25) mit StartTLS oder Port 465 mit smtps 21 21 * Kein Login, kein Passwort (evtl. in Zukunft geplant) 22 22 23 -Konfiguration alsSmarthost:23 +Konfiguration mit Smarthost in den internen Netzen der ITO: 24 24 25 25 * SMTP-Server: mailrelay.rbg.tum.de 26 26 * Port: 25 ... ... @@ -30,19 +30,21 @@ 30 30 Es ist wichtig, dass Sie diese Hinweise beachten. Was passiert, wenn Sie es nicht beachten? 31 31 32 32 * Wenn Ihre Mails von Benutzern externer Provider (z.B. Outlook.com) als Spam markiert werden oder dort automatisch als Spam erkannt werden, kann es sein, dass dieser Provider unseren Mailserver auf eine Sperrliste setzt. Im schlimmsten Fall kann dann niemand an der CIT mehr E-Mails versenden. 33 -* Bei falscher Konfiguration kann es auch leicht passieren, dass Mails in großer Anzahl entstehen, die unser Mailsystem überlasten 34 -* Sie laufen Gefahr, dass wir Ihren Host sperren 35 -* Sie laufen Gefahr, dass Ihr Host automatisch gesperrt wird von uns oder vom LRZ 36 -* Ihre Benutzer können Ihre Services im wichtigsten Moment nicht benutzen ,Ihr Projekt scheitert33 +* Bei falscher Konfiguration kann es auch leicht passieren, dass Mails in großer Anzahl entstehen, die unser Mailsystem überlasten. 34 +* Sie laufen Gefahr, dass wir Ihren Host sperren. 35 +* Sie laufen Gefahr, dass Ihr Host automatisch gesperrt wird von uns oder vom LRZ. 36 +* Ihre Benutzer können Ihre Services im wichtigsten Moment nicht benutzen oder Ihre Mails nicht empfangen. Ihr Projekt scheitert. 37 37 38 38 Deswegen folgende Hinweise: 39 39 40 40 * Schicken Sie niemandem Mails gegen ihren Willen. Idealerweise sollten sich alle Empfänger vorher explizit einverstanden erklärt haben, dass Sie Mails von Ihnen erhalten werden, und aus der Mail sollte explizit hervorgehen, warum die Empfänger sie erhalten. 41 41 * Schicken Sie von einer gültigen Absenderadresse. Verwenden Sie keinen Absender wie "noreply@...". Es ist wichtig, dass auch Bounces an diese Adresse geregelt empfangen werden können. Sonst können Double Bounces entstehen, was insbesondere in größerer Anzahl das Mailsystem belasten kann. 42 +** Beachten Sie, dass es zwei Absenderadressen gibt: 1. Die Absenderadresse aus dem "From"-Header und 2. den Envelope Sender (auch bekannt als Bounce-Adresse). Beide müssen gültig sein. Sie können für beides die gleiche Adresse verwenden. 42 42 * Testen Sie, was mit Bounces passiert, falls Ihr Script an eine nichtzustellbare Adresse schickt. 43 -* Testen Sie, ob Ihre Mails von externen Providern oder von einer Software wie SpamAssassin als Spam eingestuft w ird.44 +* Testen Sie, ob Ihre Mails von externen Providern oder von einer Software wie SpamAssassin als Spam eingestuft werden. 44 44 * Wenn Sie HTML-Mails versenden, fügen Sie eine Plain-Text-Version mit ein. 45 45 * Überlegen Sie, wie viele Mails in Ausnahmesituationen entstehen können, und implementieren Sie ggf. ein Ratelimit. [[Hinweise zu Massenmails>>https://wiki.ito.cit.tum.de/bin/view/Informatik/Benutzerwiki/MassenMails/]] 47 +* Statt große Attachments (inbesondere an viele Empfänger gleichzeitig) zu verschicken, suchen Sie nach einer anderen Lösung, z.B. File Hosting. 46 46 47 47 Hinweise hauptsächlich für selbstprogrammierte Scripte / Anwendungen: 48 48 ... ... @@ -50,3 +50,42 @@ 50 50 ** Der Header "Date" muss auf ein syntaktisch korrektes Datum gesetzt werden, es soll nicht in der Vergangenheit oder Zukunft liegen. Verwenden Sie Libraries o.ä., um den Header zu erzeugen. 51 51 ** Der Header Message-ID sollte auch von einer Library erzeugt werden. 52 52 * Implementieren Sie Fehlerbehandlung, wenn der SMTP-Server oder das sendmail-Command einen Fehler liefert. 55 + 56 +== Beispiel-Code in Python == 57 + 58 +##from email.mime.text import MIMEText 59 +import email.utils 60 +import email.charset 61 +import smtplib## 62 + 63 + 64 +##body = 'Dies wäre eine Test-Message, sie hätte sogar Umlaute.' 65 +subject = 'Bloß ein Test' 66 +sender_name = 'Vorname Nachname' 67 +sender_addr = '........@cit.tum.de' 68 +recipient = '......@cit.tum.de'## 69 + 70 + 71 +##charset = email.charset.Charset('utf-8') 72 +# Quoted Printable: So bleibt der Quelltext der E-Mail menschenlesbar. 73 +charset.body_encoding = email.charset.QP## 74 + 75 +##mime = MIMEText(body, _charset=charset) 76 +mime['From'] = email.utils.formataddr((sender_name, sender_addr)) # Ergibt Vorname Nachname <addr> 77 +mime['To'] = recipient 78 +mime['Subject'] = subject 79 +mime['Date'] = email.utils.formatdate(localtime=True) 80 +mime['Message-ID'] = email.utils.make_msgid()## 81 + 82 +##try: 83 + smtp = smtplib.SMTP( 84 + host='localhost', 85 + port=25) 86 + smtp.send_message( 87 + mime, 88 + from_addr=sender_addr, # Envelope Sender 89 + to_addrs=[recipient]) 90 + smtp.quit() 91 +except (smtplib.SMTPException, ConnectionRefusedError): 92 + print('Es gab einen SMTP-Fehler')## 93 +