# POP3-E-Mail-Abfrage funktioniert nicht mehr

**URL:** https://meta.discourse.org/t/pop3-email-polling-stopped-working/181115
**Category:** Support
**Created:** [25. Februar 2021 um 12:59 UTC](https://meta.discourse.org/t/pop3-email-polling-stopped-working/181115 "2021-02-25T12:59:29Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![jzedlitz](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jzedlitz/32/211132_2.png) [@jzedlitz](https://meta.discourse.org/u/jzedlitz)
#### Post date: [25. Februar 2021 um 12:59 UTC](https://meta.discourse.org/t/pop3-email-polling-stopped-working/181115/1 "2021-02-25T12:59:29Z")

</div>

Wir haben ein seltsames Problem mit unserem Discourse-Server. Seit mehreren Wochen funktionierte das Abrufen von E-Mails von unserem internen POP3-Server problemlos. Am 16. Februar wurde der Empfang von E-Mails plötzlich unterbrochen. Seltsamerweise sehen wir in den Logdateien unseres POP3-Servers Aktivitäten von Discourse:

```plaintext
Feb 25 13:54:49 mailout popa3d[12458]: Authentication passed for discourse
Feb 25 13:54:49 mailout popa3d[12458]: 1545 messages (12060237 bytes) loaded
Feb 25 13:54:49 mailout popa3d[12458]: 0 (0) deleted, 1545 (12060237) left

```

Dennoch werden keine neuen E-Mails verarbeitet.

Wir verwenden die neueste Discourse-Version 2.7.0.beta4 (seit heute, zuvor 2.7.0.beta3). Dies sind unsere E-Mail-Einstellungen:

 ![Screenshot email settings](https://global.discourse-cdn.com/meta/original/3X/c/7/c77dbacec52d1548a858c4c97f19700a94105db1.png)

Haben Sie eine Idee, was schiefgehen könnte? Was können wir tun, um den Fehler weiter zu untersuchen?

---

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [2. März 2021 um 04:53 UTC](https://meta.discourse.org/t/pop3-email-polling-stopped-working/181115/2 "2021-03-02T04:53:48Z")

</div>

Sind das alte E-Mails? Welche Daten stehen auf diesen E-Mails?

---

<div class="post-metadata">

### Author: ![schungx](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/schungx/32/70989_2.png) [@schungx](https://meta.discourse.org/u/schungx)
#### Post date: [10. März 2021 um 11:03 UTC](https://meta.discourse.org/t/pop3-email-polling-stopped-working/181115/3 "2021-03-10T11:03:42Z")

</div>

Ich befinde mich in fast derselben Situation.

POP3 hat jahrelang funktioniert, aber seit dem 23. Februar kommen keine E-Mails mehr an.

Ich habe den E-Mail-Server überprüft, und Discourse hat den Server fleißig alle paar Minuten abgefragt. Allerdings wurde nichts empfangen.

Die E-Mails verbleiben auf dem E-Mail-Server.

Hinweis: Ich habe am 22. Februar ein Update auf Version `2.7.0.beta4` durchgeführt, daher glaube ich, dass dies wahrscheinlich damit zusammenhängt…

---

<div class="post-metadata">

### Author: ![schungx](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/schungx/32/70989_2.png) [@schungx](https://meta.discourse.org/u/schungx)
#### Post date: [10. März 2021 um 11:06 UTC](https://meta.discourse.org/t/pop3-email-polling-stopped-working/181115/4 "2021-03-10T11:06:23Z")

</div>

> [@codinghorror](#):
>
> Sind das alte E-Mails? Welche Daten stehen auf diesen E-Mails?

Die E-Mails, die im E-Mail-Server stecken, sind alle mit einem Datum NACH dem Ausfall von POP3 versehen, also nach dem 23. Februar in meinem Fall.

---

<div class="post-metadata">

### Author: ![schungx](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/schungx/32/70989_2.png) [@schungx](https://meta.discourse.org/u/schungx)
#### Post date: [10. März 2021 um 11:23 UTC](https://meta.discourse.org/t/pop3-email-polling-stopped-working/181115/5 "2021-03-10T11:23:48Z")

</div>

OK, versuch es mal so:

Gehe auf den E-Mail-Server und lösche alle E-Mails dort. Natürlich muss es eine Möglichkeit geben, die E-Mails zu behalten, die du behalten möchtest…

Warte dann, bis Discourse erneut per POP3 abruft.

Bei mir funktioniert das jetzt und E-Mails werden wieder angezeigt.

Ich vermute, dass ein interner E-Mail-ID-Zähler während des letzten Version-Updates beschädigt wurde. @codinghorror Vielleicht ist er auf eine sehr große Zahl gesetzt, sodass alle E-Mails als „bereits gelesen

---

<div class="post-metadata">

### Author: ![gerhard](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/gerhard/32/119479_2.png) [@gerhard](https://meta.discourse.org/u/gerhard)
#### Post date: [10. März 2021 um 13:18 UTC](https://meta.discourse.org/t/pop3-email-polling-stopped-working/181115/6 "2021-03-10T13:18:35Z")

</div>

Die letzte Änderung beim POP3-Abfragen fand im Januar statt.

> <https://github.com/discourse/discourse/commit/5710d5d771537d106fbe3488355ded00e514c073>
>
> This adds a safe default to not process pop3 emails when the pop3 polling option… is set up that are \> 1 week old. This is to avoid the situation where an older mailbox is used, which causes us to go and process all emails in that mailbox, sending out error emails to the senders of emails which cannot be parsed successfully.

Allein dies sollte das Abfragen durch Discourse nicht verhindern, aber es ist möglich, dass eine eingehende E-Mail eine Ausnahme auslöst. Im neuen Code gibt es keine Fehlerbehandlung…

@jzedlitz: Siehst du das Problem immer noch und möchtest helfen, die Ursache zu finden? Gibt es verwandte Fehler in `/logs`? Siehst du einen Fehler in `/sidekiq/scheduler`, wenn du nach `Jobs::PollMailbox` suchst? Tritt ein Fehler auf, wenn du das Abfragen manuell in der Rails-Konsole ausführst?

```plaintext
./launcher enter app
rails c

Jobs::PollMailbox.new.execute({})

```

---

<div class="post-metadata">

### Author: ![schungx](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/schungx/32/70989_2.png) [@schungx](https://meta.discourse.org/u/schungx)
#### Post date: [10. März 2021 um 13:47 UTC](https://meta.discourse.org/t/pop3-email-polling-stopped-working/181115/7 "2021-03-10T13:47:10Z")

</div>

Normalerweise ist die Situation zumindest bei mir, dass der POP3-Abfrageversuch _erfolgreich_ ist.

Ich kann sehen, dass Discourse vom E-Mail-Server abruft.

Allerdings trennt Discourse die Verbindung einfach, ohne E-Mails herunterzuladen.

Zumindest bei mir treten keinerlei Fehler auf.

---

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [10. März 2021 um 22:13 UTC](https://meta.discourse.org/t/pop3-email-polling-stopped-working/181115/8 "2021-03-10T22:13:51Z")

</div>

Wir haben vor einiger Zeit auch eine Sicherheitsprüfung hinzugefügt, um sehr alte E-Mails zu ignorieren. Vielleicht erinnert sich @martin daran.

---

<div class="post-metadata">

### Author: ![martin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/martin/32/491371_2.png) [@martin](https://meta.discourse.org/u/martin)
#### Post date: [10. März 2021 um 23:28 UTC](https://meta.discourse.org/t/pop3-email-polling-stopped-working/181115/9 "2021-03-10T23:28:35Z")

</div>

Ja, das war der PR, den @gerhard unter [POP3 email polling stopped working - #6 by gerhard](https://meta.discourse.org/t/pop3-email-polling-stopped-working/181115/6?u=martin) verlinkt hat. Das sollte meiner Meinung nach nichts kaputt machen. Ich bräuchte die vollständige ursprüngliche E-Mail, um sie damit testen zu können. Hier ist die wichtigste Code-Änderung:

```ruby
def mail_too_old?(mail_string)
  mail = Mail.new(mail_string)
  date_header = mail.header['Date']
  return false if date_header.blank?

  date = Time.parse(date_header.to_s)
  date < 1.week.ago
end

```

Vielleicht könnte es also einen stillen Fehler geben, falls Time.parse fehlschlägt? Da wir ohnehin nichts unternehmen, wenn der `Date`-Header fehlt.

---

<div class="post-metadata">

### Author: ![jzedlitz](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jzedlitz/32/211132_2.png) [@jzedlitz](https://meta.discourse.org/u/jzedlitz)
#### Post date: [11. März 2021 um 14:33 UTC](https://meta.discourse.org/t/pop3-email-polling-stopped-working/181115/10 "2021-03-11T14:33:09Z")

</div>

Entschuldigung für die späte Antwort. Wir haben das Problem mehr oder weniger gelöst, indem wir das POP3-Postfach für Discourse geleert haben. Sofort konnte Discourse wieder Nachrichten abrufen. Ich habe einige der neueren E-Mails in das nun leere POP3-Postfach übertragen. Diese konnten ebenfalls verarbeitet werden. Sobald ich jedoch einige der 1.400 älteren E-Mails in das Postfach legte, konnte Discourse keine Nachrichten mehr verarbeiten.

---

<div class="post-metadata">

### Author: ![gde](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/gde/32/481170_2.png) [@gde](https://meta.discourse.org/u/gde)
#### Post date: [6. April 2021 um 20:15 UTC](https://meta.discourse.org/t/pop3-email-polling-stopped-working/181115/11 "2021-04-06T20:15:00Z")

</div>

Ich bin gerade auf das gleiche Problem gestoßen. Mir ist aufgefallen, dass etwas nicht stimmte, als E-Mails eigentlich Nachrichten erstellen sollten. Der POP3-Mailbox waren einige E-Mails enthalten (ich betreibe eine kleine Instanz). Das schrittweise Hinzufügen der Nachrichten scheint zu funktionieren; ich _glaube_, es läuft jetzt besser, aber ich muss noch etwas warten, um das zu bestätigen.

---

<div class="post-metadata">

### Author: ![jzedlitz](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jzedlitz/32/211132_2.png) [@jzedlitz](https://meta.discourse.org/u/jzedlitz)
#### Post date: [9. April 2021 um 05:00 UTC](https://meta.discourse.org/t/pop3-email-polling-stopped-working/181115/12 "2021-04-09T05:00:27Z")

</div>

Leider ist das Problem erneut aufgetreten. Mit `formail` habe ich das mbox in einzelne Nachrichten aufgeteilt und diese nacheinander in das POP3-Konto eingespeist. Einige (sogar ältere) Nachrichten wurden von Discourse verarbeitet, andere nicht.

Gibt es eine Möglichkeit, mehr Logmeldungen von `Jobs::PollMailbox.new.execute({})` auszulösen, um zu sehen, warum eine Nachricht ignoriert wird?

---

<div class="post-metadata">

### Author: ![riking](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/riking/32/170938_2.png) [@riking](https://meta.discourse.org/u/riking)
#### Post date: [9. April 2021 um 05:16 UTC](https://meta.discourse.org/t/pop3-email-polling-stopped-working/181115/13 "2021-04-09T05:16:05Z")

</div>

Haben Sie `/logs` überprüft, wenn eine E-Mail gefunden wird, die nicht verarbeitet werden kann?

Die oben genannten Beiträge deuten darauf hin, dass es sich um bestimmte Nachrichten handelt, die fehlschlagen.

---

<div class="post-metadata">

### Author: ![jzedlitz](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jzedlitz/32/211132_2.png) [@jzedlitz](https://meta.discourse.org/u/jzedlitz)
#### Post date: [9. April 2021 um 15:17 UTC](https://meta.discourse.org/t/pop3-email-polling-stopped-working/181115/14 "2021-04-09T15:17:36Z")

</div>

> [@riking](#):
>
> Hast du `/logs` überprüft, wenn eine E-Mail gefunden wird, die nicht verarbeitet werden kann?

Welche Protokolldatei genau? Ich habe `tail -f /var/discourse/shared/standalone/log/rails/*.log` versucht, aber es werden keine Meldungen angezeigt, während Discourse versucht, die E-Mails abzurufen.

---

<div class="post-metadata">

### Author: ![riking](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/riking/32/170938_2.png) [@riking](https://meta.discourse.org/u/riking)
#### Post date: [10. April 2021 um 01:35 UTC](https://meta.discourse.org/t/pop3-email-polling-stopped-working/181115/15 "2021-04-10T01:35:35Z")

</div>

Als Admin besuchen Sie [https://discourse.example.com/logs](https://discourse.example.com/logs) in Ihrem Webbrowser.

Auffällig ist, dass der Ordner `/log/` heißt, und das war nicht das, worauf ich mich bezog 😏

---

<div class="post-metadata">

### Author: ![jzedlitz](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jzedlitz/32/211132_2.png) [@jzedlitz](https://meta.discourse.org/u/jzedlitz)
#### Post date: [10. April 2021 um 06:36 UTC](https://meta.discourse.org/t/pop3-email-polling-stopped-working/181115/16 "2021-04-10T06:36:49Z")

</div>

Danke für die Erklärung. Leider bleibt /logs/ leer, während E-Mails abgerufen werden. Gibt es eine Möglichkeit, die Protokollierungsstufe zu erhöhen?

---

<div class="post-metadata">

### Author: ![riking](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/riking/32/170938_2.png) [@riking](https://meta.discourse.org/u/riking)
#### Post date: [11. April 2021 um 18:48 UTC](https://meta.discourse.org/t/pop3-email-polling-stopped-working/181115/17 "2021-04-11T18:48:09Z")

</div>

Dann könnte es ein Problem in der Fehlerbehandlung beim POP3-Abfragen geben. Jemand muss den Code überprüfen und prüfen, ob Fehler unterdrückt werden.

---

<div class="post-metadata">

### Author: ![gerhard](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/gerhard/32/119479_2.png) [@gerhard](https://meta.discourse.org/u/gerhard)
#### Post date: [11. April 2021 um 22:15 UTC](https://meta.discourse.org/t/pop3-email-polling-stopped-working/181115/18 "2021-04-11T22:15:10Z")

</div>

Könntest du die folgenden Änderungen in `app/jobs/scheduled/poll_mailbox.rb` innerhalb des Docker-Containers anwenden, bevor du `Jobs::PollMailbox.new.execute({})` in der Rails-Konsole ausführst?

```diff
       pop3.start(SiteSetting.pop3_polling_username, SiteSetting.pop3_polling_password) do |pop|
+ mail_string = nil
         pop.each_mail do |p|
+ mail_string = nil
           mail_string = p.pop
           break if mail_too_old?(mail_string)
           process_popmail(mail_string)
           p.delete if SiteSetting.pop3_polling_delete_from_server?
+ rescue => e
+ puts e.message
+ puts e.backtrace.join("\n\t")
+ puts "", "MESSAGE:", mail_string if mail_string
         end
       end

```

---

<div class="post-metadata">

### Author: ![jzedlitz](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jzedlitz/32/211132_2.png) [@jzedlitz](https://meta.discourse.org/u/jzedlitz)
#### Post date: [12. April 2021 um 16:00 UTC](https://meta.discourse.org/t/pop3-email-polling-stopped-working/181115/19 "2021-04-12T16:00:16Z")

</div>

Da ich nun weiß, in welcher Datei ich suchen muss, konnte ich selbst einige Experimente durchführen. Das Problem war die Prüfung `mail_too_old`. Nachdem ich sie entfernt habe, wurden die hängenden Nachrichten verarbeitet.

---

<div class="post-metadata">

### Author: ![gerhard](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/gerhard/32/119479_2.png) [@gerhard](https://meta.discourse.org/u/gerhard)
#### Post date: [12. April 2021 um 16:06 UTC](https://meta.discourse.org/t/pop3-email-polling-stopped-working/181115/20 "2021-04-12T16:06:32Z")

</div>

Ja, das habe ich auch vermutet, aber es wäre interessant zu wissen, welche E-Mail dafür gesorgt hat, dass `mail_too_old?` nicht funktioniert hat. War sie wirklich zu alt? Konnte die E-Mail nicht geparst werden? Oder lag etwas anderes vor? Wenn du möchtest, kannst du mir die E-Mail, die POP3 blockiert hat, per PN schicken.

[Nächste Seite](https://meta.discourse.org/t/pop3-email-polling-stopped-working/181115.md?page=2)
