Last modified by Christoph Bußenius on 2025/02/05 12:20

Hide last authors
Christoph Bußenius 1.1 1 == Wen betrifft dieser Artikel? ==
2
Christoph Bußenius 16.1 3 Dies sind **nicht** die Maileinstellungen für Endanwender.
Christoph Bußenius 1.1 4
Christoph Bußenius 16.1 5 Diese Maileinstellungen empfehlen wir zum Beispiel für **automatisch verschickte** Bestätigungsmails von Webformularen o.ä.
Christoph Bußenius 1.1 6
Christoph Bußenius 39.1 7 Es betrifft alle, die über die Mail-Server der ITO automatisch Mails verschicken möchten. Wenn Sie Mailserver des LRZ oder anderen benutzen, gelten andere Regeln, die Sie beim jeweiligen Betreiber nachfragen sollten.
8
Christoph Bußenius 1.1 9 == Verbindungsdaten ==
10
Christoph Bußenius 18.1 11 Wenn es in einer **Ubuntu-VM** im ESX der ITO ist oder einer ähnlichen Linux-Installation:
Christoph Bußenius 1.1 12
Christoph Bußenius 16.1 13 * SMTP-Server: **localhost**
Christoph Bußenius 1.1 14 * Port: 25
15 * Kein Login, kein Passwort
16 * Kein TLS/SSL
Christoph Bußenius 16.1 17 * Alternativ **"sendmail"**-Command
Christoph Bußenius 1.1 18
Christoph Bußenius 19.1 19 Von anderen Rechnern in den **internen Netzen** der ITO:
Christoph Bußenius 1.1 20
21 * SMTP-Server: mail.cit.tum.de
22 * Port: 587 (oder 25) mit StartTLS oder Port 465 mit smtps
23 * Kein Login, kein Passwort (evtl. in Zukunft geplant)
24
Christoph Bußenius 9.1 25 Konfiguration mit Smarthost in den internen Netzen der ITO:
Christoph Bußenius 1.1 26
27 * SMTP-Server: mailrelay.rbg.tum.de
28 * Port: 25
29
30 == Bitte beachten ==
31
Christoph Bußenius 41.1 32 Es ist wichtig, dass Sie diese Hinweise beachten. **Was passiert**, wenn Sie es **nicht beachten?**
Christoph Bußenius 1.1 33
Christoph Bußenius 16.1 34 * 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**.
35 * Bei falscher Konfiguration kann es auch leicht passieren, dass Mails in großer Anzahl entstehen, die unser Mailsystem **überlasten**.
Christoph Bußenius 32.1 36 * Sie laufen Gefahr, dass wir Ihren Host oder Account **sperren**.
37 * Sie laufen Gefahr, dass Ihr Host oder Account automatisch **gesperrt** wird von uns oder vom LRZ.
Christoph Bußenius 8.1 38 * Ihre Benutzer können Ihre Services im wichtigsten Moment nicht benutzen oder Ihre Mails nicht empfangen. Ihr Projekt scheitert.
Christoph Bußenius 3.1 39
40 Deswegen folgende Hinweise:
41
Christoph Bußenius 36.1 42 * 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. (Dies bezieht sich hauptsächlich auf unpersönliche Mails, insbesondere wenn sie regelmäßig geschickt werden oder für etwas werben oder einladen. Das gilt auch für Einladungen zu Konferenzen.)
Christoph Bußenius 37.1 43 * Schicken Sie von einer **gültigen (existierenden) Absenderadresse**. Verwenden Sie keinen Absender wie "noreply@...". Einige Provider stufen das als **spammig** ein. Es auch 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 zusätzlich belasten kann und die Fehlersuche erschwert.
Christoph Bußenius 16.1 44 ** 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.
Christoph Bußenius 22.1 45 ** Optional gibt es als drittes noch die **Reply-To**-Adresse, was aber kein Ersatz für gültige Absender und Bounce-Adresse ist.
Christoph Bußenius 40.1 46 * Die **Absenderdomain** muss eine der von der ITO verwalteten Domains sein. Das sind i.A. die Domains **cit.tum.de, in.tum.de, ma.tum.de**, und Subdomains davon. Insbesondere können Sie **kein @tum.de** benutzen, und auch kein @gmail.com oder andere. Das würde Probleme mit SPF und DKIM geben.
Christoph Bußenius 29.1 47 * Testen Sie, ob Sie die **Bounces** erhalten, falls Ihr Script an eine nichtzustellbare Adresse schickt.
Christoph Bußenius 16.1 48 * Testen Sie, ob Ihre Mails von externen Providern oder von einer Software wie SpamAssassin **als Spam eingestuft** werden.
49 * Wenn Sie HTML-Mails versenden, fügen Sie eine **Plain-Text**-Version mit ein.
50 * Ü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/]]
51 * Statt **große Attachments** (inbesondere an viele Empfänger gleichzeitig) zu verschicken, suchen Sie nach einer anderen Lösung, z.B. schicken Sie Links auf Dateien in der Nextcloud.
Christoph Bußenius 28.1 52 * Achtung vor **Webformular-Spam:** Wenn eine Webseite für Fremde erreichbar ist, eine frei wählbare Mailadresse eingegeben werden kann und die Möglichkeit besteht, in einem Textfeld eine URL oder einen Werbetext einzugeben, werden Spammer diese Webseite irgendwann finden und Spam darüber verschicken.
Christoph Bußenius 35.1 53 * Falls Sie mit Ihrem Benutzerpasswort Mails verschicken, speichern Sie das Passwort nicht oder nur gesichert.
Christoph Bußenius 5.1 54
55 Hinweise hauptsächlich für selbstprogrammierte Scripte / Anwendungen:
56
Christoph Bußenius 16.1 57 * Setzen Sie alle **Header auf korrekte Werte**.
58 ** 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.
59 ** Der Header **Message-ID** sollte auch von einer Library erzeugt werden.
60 * Implementieren Sie **Fehlerbehandlung**, wenn der SMTP-Server oder das sendmail-Command einen Fehler liefert.
Christoph Bußenius 13.1 61
62 == Beispiel-Code in Python ==
63
64 ##from email.mime.text import MIMEText
65 import email.utils
66 import email.charset
67 import smtplib##
68
69
70 ##body = 'Dies wäre eine Test-Message, sie hätte sogar Umlaute.'
71 subject = 'Bloß ein Test'
72 sender_name = 'Vorname Nachname'
Christoph Bußenius 14.1 73 sender_addr = '........@cit.tum.de'
74 recipient = '......@cit.tum.de'##
Christoph Bußenius 13.1 75
76
77 ##charset = email.charset.Charset('utf-8')
78 # Quoted Printable: So bleibt der Quelltext der E-Mail menschenlesbar.
79 charset.body_encoding = email.charset.QP##
80
81 ##mime = MIMEText(body, _charset=charset)
82 mime['From'] = email.utils.formataddr((sender_name, sender_addr)) # Ergibt Vorname Nachname <addr>
83 mime['To'] = recipient
84 mime['Subject'] = subject
85 mime['Date'] = email.utils.formatdate(localtime=True)
86 mime['Message-ID'] = email.utils.make_msgid()##
87
88 ##try:
89 smtp = smtplib.SMTP(
90 host='localhost',
91 port=25)
92 smtp.send_message(
93 mime,
94 from_addr=sender_addr, # Envelope Sender
95 to_addrs=[recipient])
96 smtp.quit()
Christoph Bußenius 15.1 97 except (smtplib.SMTPException, ConnectionRefusedError) as e:
98 print('Es gab einen SMTP-Fehler:', e)##
Christoph Bußenius 13.1 99
Christoph Bußenius 30.1 100
101 == Fehlersuche ==
102
103 Im oben erwähnten Setup mit ##localhost## oder ##sendmail## gestaltet sich die Fehlersuche besonders einfach für Sie:
104
105 * Der Befehl **mailq** zeigt Mails an, die noch aufgestaut sind.
106 * Die Datei **/var/log/mail.log** zeigt Erfolgs- und Fehlermeldung von verschickten Mails.
107 * Wenn Sie wegen Ratelimit oder Spam von uns gesperrt wurden, sehen Sie an diesen Stellen auch entsprechende Fehlermeldungen.