Fix breaking cronjob while receiving E-Mails
Summary
Currently, the cronjob is not working on PHP8 due to multiple reasons.
A release as a hotfix should be considered.
Other related Issues: #1275 #1529 (closed)
Discussion
https://yunity.slack.com/archives/C045HBJ1P4M/p1671354664402799
Steps to reproduce
Send an E-Mail which cannot be decoded with the html2text library
The job will fail and no more E-Mails will be received.
Currently, such incorrect E-Mails are produced by ourselves (see #1529 (closed))
Empty Mails with only attachment are also crashing
What is the current bug behavior?
The Cronjob is crashing on invalid content (Possible DoS Attack)
What is the expected correct behavior?
Handle the thrown Exception in a correct way. Proposal for an order:
- Try to fix the mail/content
- Fall back to Text content if available
-
- Notify the sender, that the Mail could not be parsed and remove the mail from queue.
- Exceptions that are related to Server Errors Permission Errors like out of space should be reported to Sentry and the E-Mail should be moved to a subfolder e.g. "invalid" configured as a variable
Relevant error messages and/or screenshots
E.g.:
Dez 18 11:49:15 onion php-production[1645681]: 2022-12-18 11:49:15 [ERROR] Could not get HTML body Unsupported charset "text/html": mb_convert_encoding(): Argument #3 ($from_en>
Dez 18 11:49:15 onion php-production[1645681]: imap_alerts (0):
Dez 18 11:49:15 onion php-production[1645681]: imap_errors (0):, continuing with PLAIN TEXT\n
Dez 18 11:49:15 onion php-production[1645681]: 2022-12-18 11:49:15 [ERROR] Could not get PLAIN TEXT body Unsupported charset "text/plain": mb_convert_encoding(): Argument #3 ($>
Dez 18 11:49:15 onion php-production[1645681]: imap_alerts (0):
Dez 18 11:49:15 onion php-production[1645681]: imap_errors (0):, skipping mail.\n
Dez 18 11:49:15 onion php-production[1645681]: 2022-12-18 11:49:15 [ERROR] Something went wrong, SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'body_html' cannot>
Dez 18 11:49:15 onion php-production[1645681]:
But it is not only this Exception!
Possible fixes
Handle every Exception that could be thrown while E-Mail-Handling
Edited by Stefan C