-
Notifications
You must be signed in to change notification settings - Fork 12
2016 12 09 postmortem e maillijsten
Op 8 december 2016 bleek dat de e-maillijsten niet waren gemigreerd. Dit hield onder meer in dat bestaande lijsten niet werden bijgewerkt. Door een andere storing werden e-mails überhaupt niet goed afgeleverd. Hieronder volgt een beschrijving van dit probleem en hoe het is opgelost.
Op 8 december rond 17:22 vroeg @sversteeg of de e-maillijsten nog werkten. Na een dump van list_members weekend
bleek dat dit niet de juiste mensen waren. Om 17:30 was vastgesteld dat de synchronisatie van de mailinglists niet was overgezet. Om 17:41 bleek dat er nog 181 e-mails in de queue stonden met als melding een milter-reject
. Vermoeden was dat DKIM in de weg zat en dat werd snel bevestigd: concrexit draait vanaf een IP-adres dat niet in [achteraf gezien was het waarschijnlijk alleen de private key, zie verder].TrustedHosts
van OpenDKIM stond
Om 17:56 zijn de e-maillijsten uit concrete5 gemigreerd naar concrexit.
Om 18:28 werd besloten even OpenDKIM uit te zetten zodat alle e-mails die nog in de queue stonden bezorgd konden worden. Kort daarna (18:29) is OpenDKIM weer aangezet. Rond 19:01 werd e-mail nog steeds niet goed doorgelaten. Rond 19:20 was extra logging aangezet bij OpenDKIM en bleek dat de private key voor thalia.nu
(waarmee e-mail wordt ondertekend) niet gelezen kon worden:
Dec 8 19:18:52 ivo opendkim[17965]: can't load key from /etc/opendkim/keys/thalia.nu/default.private: Permission denied
De permissies zijn daarna rechtgezet (owner/group van root:root
omgezet naar opendkim:opendkim
en permissies -rw-------
, of 600
, laten stan). Oorzaak van de verandering van deze permissies is nog niet gevonden. Om 19:25 werd bevestigd dat een bewuste crash in Django direct een e-mail opleverde.
Om 20:25 is een synchronisatie met het bestaande syncmailinglists.py
gedaan. Ter bevestiging werd @sversteeg gevraagd of de leden van weekend
de juiste waren. Dit bleek niet het geval: er zaten véél meer mensen in. Rond 20:38 werd geconstateerd dat de mailinglist-API alle leden van een commissie teruggaf, in plaats van alleen de actieve. Om 21:16 is hiervoor een fix gevonden. Om 21:50 is dit richting productie gegaan.
Rond 23:32 werd een controle uitgevoerd; de synchronisatie via syncmailinglists.py
leverde een HTTP 500 op:
Internal Server Error: /mailinglists/
FieldError at /mailinglists/
Cannot resolve keyword 'commiteemembership' into field. Choices are: address_city, address_postal_code, address_street, address_street2, bank_account, birthday, committee, committeemembership, direct_debit_authorized, display_name_preference, emergency_contact, emergency_contact_phone_number, event_permissions, id, initials, language, mailinglist, mentorship, nickname, order, phone_number, photo, profile_description, programme, receive_newsletter, receive_optin, registration, show_birthday, starting_year, student_number, user, user_id, website
Er bleek een typo gemaakt te zijn. Om 01:50 (we leven inmiddels op 9 december 2016) werd dit bevestigd en rond 02:32 was dit opgelost.
- 8 december 2016
- 17:22 inkomende vraag of e-maillijsten nog werkten
- 17:30 bevestiging dat synchronisatie van e-maillijsten niet is overgezet
- 17:41 constatering van 181 e-mails in de queue
- 17:56 e-maillijsten uit concrete5 overgezet naar concrexit
- 18:28 OpenDKIM (e-mailondertekening) uitgezet
- 18:28 e-mailqueue geflusht
- 18:29 OpenDKIM weer aangezet
- 19:01 e-mail wordt nog steeds niet doorgelaten
- 19:20 extra logging aangezet en probleem gevonden: private key onleesbaar
- 19:25 bevestiging dat e-mail weer werkt
- 20:25 poging tot e-maillijstsynchronisatie, dit werkte niet naar behoren
- 20:38 bevestiging dat alle (oud-)leden van een commissie in een e-maillijst terechtkwamen
- 21:16 fix gevonden
- 21:50 fix in productie
- 23:32 controle van de fix, dit leverde een foutmelding op
- 9 december 2016
- 01:50 bevestiging dat de fix niet goed was
- 02:32 fout opgelost en in productie