Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Aktivierungsmails landen im Spam / inaktive Accounts #28

Open
The-Compiler opened this issue May 4, 2021 · 6 comments
Open

Aktivierungsmails landen im Spam / inaktive Accounts #28

The-Compiler opened this issue May 4, 2021 · 6 comments

Comments

@The-Compiler
Copy link
Member

Unsere Aktivierungsmails an @ost.ch scheinen im Spam zu landen. Ich habe das grad kurz getestet.

Wir scheinen auch einige Leichen in der Datenbank zu haben, die nie aktiviert wurden - die meisten allerdings noch zu HSR-Zeiten:

studentenportal=# select count(*) from front_user where is_active = 'f';
 count 
-------
  1014
(1 row)

studentenportal=# select count(*) from front_user where is_active = 'f' and email like '%@ost.ch';
 count 
-------
    15
(1 row)

Zwei Leute haben sich dazu im Januar schon auf [email protected] gemeldet - ich habe diese zwei Accounts jetzt mal von Hand in der DB aktiviert.

@fabianhauser
Copy link
Member

Welcome to the Microsoft Cloud...

Mit studentenportal/web#116 wäre das mit der Registrierung kein Problem mehr.
Evtl. würde es helfen, den E-Mails DKIM-Signaturen und im DNS einen SPF hinzuzufügen, oder die E-Mails über einen Dienstleister rauszulassen.

@The-Compiler
Copy link
Member Author

Sofern am Setup in der Zwischenzeit nix verändert wurde, lassen wir die bereits via Hostpoint raus.

@fabianhauser
Copy link
Member

Sofern am Setup in der Zwischenzeit nix verändert wurde, lassen wir die bereits via Hostpoint raus.

Ah stimmt, das hat sich ja mit dem neuen Setup geändert...

@dbrgn
Copy link
Member

dbrgn commented May 4, 2021

DKIM und SPF sind definitiv hilfreich, falls das nicht schon eingerichtet ist.

@The-Compiler
Copy link
Member Author

Current state:

image

sowie studentenportal/web#398

@The-Compiler
Copy link
Member Author

Alle nicht aktivierten Accounts mit einer @ost.ch-Adresse haben soeben eine neue Aktivierungsmail bekommen. Dazu habe ich via python3 manage.py shell erst alle betroffenen Accounts rausgesucht:

>>> affected = registration.models.RegistrationProfile.objects.filter(activated=False, user__email__endswith="ost.ch")
>>> len(affected)
65

dann habe ich das Registrierungsdatum aktualisiert, damit die betroffenen Personen nochmals eine Woche Zeit haben:

>>> import datetime
>>> for reg in affected:
...     reg.user.date_joined = datetime.datetime.now()
...     reg.user.save()
...     assert not reg.activation_key_expired()

und schliesslich alle Aktivierungs-Keys rausgesucht:

>>> {reg.user.name(): reg.activation_key for reg in affected}

Mit dieser Info habe ich dann ein Skript gefüttert, was via OST-SMTP-Server (via VPN ohne Authentifizierung nutzbar) nochmals eine Nachricht an alle betroffenen Personen verschickt:

import email.message
import time
import smtplib

data = {
    ...,
    "florian.bruhin": 'fc99714de40aac37ae57026e0bb734ba540c3f1cb4a002fef313c4185731ddd9',
}

SERVER = "smtp02.ost.ch"
TIMEOUT = 5
COOLDOWN = 10
FROMNAME = "Florian Bruhin"
FROMADDR = "[email protected]"
REPLY_TO = "[email protected]"

CONTENT = """
Hallo {name},

Du erhältst diese Nachricht, da du dich (vermutlich schon vor einiger Zeit) für
studentenportal.ch registriert hast, deinen Account {username} jedoch nie
aktiviert hast.

Vermutlich hast du die Aktivierungsmail nie bekommen. Leider scheinen die
OST-Mailserver einen deutlich agressiveren Spamfilter zu besitzen als damals
die der HSR, der die Mails gerne auch gleich komplett entsorgt, anstatt sie
wenigstens als Junk-Mail auszuliefern...

Jedenfalls: Sorry für die Umstände und die lange Wartezeit. Bisher fühlte sich
leider niemand dafür zuständig, dies hat sich nun geändert.

Du hast nun nochmals eine Woche Zeit, um deinen Account mit folgendem Link zu
aktivieren:

https://studentenportal.ch/accounts/activate/{key}

Sollte es wider Erwarten trotzdem noch Probleme geben, melde dich bitte bei
[email protected].

Liebe Grüsse,
Florian Bruhin
"""

def human_name(name: str) -> str:
    return " ".join(s.capitalize() for s in name.rstrip("1").split("."))

def name_to_email(name: str) -> str:
    return f"{name}@ost.ch"

messages = []

for name, actkey in data.items():
    msg = email.message.EmailMessage()
    msg["Subject"] = "Aktivierung Studentenportal"
    msg["From"] = f"{FROMNAME} <{FROMADDR}>"
    msg["To"] = name_to_email(name)
    msg["Reply-To"] = "[email protected]"
    msg["Bcc"] = FROMADDR
    msg.set_content(CONTENT.format(name=human_name(name), username=name, key=actkey))
    messages.append(msg)


with smtplib.SMTP(SERVER, timeout=TIMEOUT) as smtp:
    for i, msg in enumerate(messages, start=1):
        print(f"{i:2}/{len(messages)} {msg['To']}")
        smtp.send_message(msg)
        time.sleep(COOLDOWN)

Zwei Baustellen bleiben momentan noch offen:

  • Wir haben immer noch 1089 unaktivierte Accounts, davon 1030 mit einer @hsr.ch-Adresse. Was stellen wir damit an? Ich könnte natürlich die Übung von oben nochmals mit all den Accounts wiederholen, aber keine Ahnung, ab wann ich da in ein Limit des Servers reinlaufe... (und ob der überhaupt was an @hsr.ch ausliefert, bzw. wie viele Adressen noch existieren)
  • Ggf. tritt das Problem künftig wieder auf. Das Einzige, was ich von unserer Seite aus verbessern konnte ist, einen SPF-Record zu setzen. https://www.mail-tester.com/ gibt uns nun 9 von 10 Punkten. DKIM/DMARC fehlt weiterhin, aber das wird nicht von Hostpoint unterstützt...

Momentan scheints so auszusehen, dass die Mails in der OST-Mailbox im Junk ausgeliefert werden. Das ist schon mal besser, als gar nicht...

The-Compiler added a commit to studentenportal/web that referenced this issue Jun 9, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants