Version 14.1 by Christoph Bußenius on 2024/12/09 11:34

Hide last authors
Christoph Bußenius 1.1 1 == Wen betrifft dieser Artikel? ==
2
3 Dies sind nicht die Maileinstellungen für Endanwender.
4
5 Diese Maileinstellungen empfehlen wir zum Beispiel für automatisch verschickte Bestätigungsmails von Webformularen o.ä.
6
7 == Verbindungsdaten ==
8
Christoph Bußenius 11.1 9 Wenn es in einer Ubuntu-VM im ESX der ITO ist oder einer ähnlichen Linux-Installation:
Christoph Bußenius 1.1 10
11 * SMTP-Server: localhost
12 * Port: 25
13 * Kein Login, kein Passwort
14 * Kein TLS/SSL
15 * Alternativ "sendmail"-Command
16
17 Von anderen Rechnern in den internen Netzen der ITO:
18
19 * SMTP-Server: mail.cit.tum.de
20 * Port: 587 (oder 25) mit StartTLS oder Port 465 mit smtps
21 * Kein Login, kein Passwort (evtl. in Zukunft geplant)
22
Christoph Bußenius 9.1 23 Konfiguration mit Smarthost in den internen Netzen der ITO:
Christoph Bußenius 1.1 24
25 * SMTP-Server: mailrelay.rbg.tum.de
26 * Port: 25
27
28 == Bitte beachten ==
29
30 Es ist wichtig, dass Sie diese Hinweise beachten. Was passiert, wenn Sie es nicht beachten?
31
Christoph Bußenius 2.1 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.
Christoph Bußenius 8.1 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 oder Ihre Mails nicht empfangen. Ihr Projekt scheitert.
Christoph Bußenius 3.1 37
38 Deswegen folgende Hinweise:
39
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 * 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.
Christoph Bußenius 12.1 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.
Christoph Bußenius 3.1 43 * Testen Sie, was mit Bounces passiert, falls Ihr Script an eine nichtzustellbare Adresse schickt.
Christoph Bußenius 10.1 44 * Testen Sie, ob Ihre Mails von externen Providern oder von einer Software wie SpamAssassin als Spam eingestuft werden.
Christoph Bußenius 6.1 45 * Wenn Sie HTML-Mails versenden, fügen Sie eine Plain-Text-Version mit ein.
Christoph Bußenius 5.1 46 * Ü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/]]
Christoph Bußenius 7.1 47 * Statt große Attachments (inbesondere an viele Empfänger gleichzeitig) zu verschicken, suchen Sie nach einer anderen Lösung, z.B. File Hosting.
Christoph Bußenius 5.1 48
49 Hinweise hauptsächlich für selbstprogrammierte Scripte / Anwendungen:
50
Christoph Bußenius 3.1 51 * Setzen Sie alle Header auf korrekte Werte.
52 ** 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.
53 ** Der Header Message-ID sollte auch von einer Library erzeugt werden.
Christoph Bußenius 5.1 54 * Implementieren Sie Fehlerbehandlung, wenn der SMTP-Server oder das sendmail-Command einen Fehler liefert.
Christoph Bußenius 13.1 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'
Christoph Bußenius 14.1 67 sender_addr = '........@cit.tum.de'
68 recipient = '......@cit.tum.de'##
Christoph Bußenius 13.1 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