Add sanity_check that disables invalid mailbox and all of its aliases
This commit is contained in:
parent
1101ba5afa
commit
befbb0c0c0
55
cron.py
55
cron.py
|
@ -12,7 +12,12 @@ from app.config import (
|
||||||
MACAPP_APPLE_API_SECRET,
|
MACAPP_APPLE_API_SECRET,
|
||||||
APPLE_API_SECRET,
|
APPLE_API_SECRET,
|
||||||
)
|
)
|
||||||
from app.email_utils import send_email, send_trial_end_soon_email, render
|
from app.email_utils import (
|
||||||
|
send_email,
|
||||||
|
send_trial_end_soon_email,
|
||||||
|
render,
|
||||||
|
email_domain_can_be_used_as_mailbox,
|
||||||
|
)
|
||||||
from app.extensions import db
|
from app.extensions import db
|
||||||
from app.log import LOG
|
from app.log import LOG
|
||||||
from app.models import (
|
from app.models import (
|
||||||
|
@ -26,6 +31,7 @@ from app.models import (
|
||||||
ManualSubscription,
|
ManualSubscription,
|
||||||
RefusedEmail,
|
RefusedEmail,
|
||||||
AppleSubscription,
|
AppleSubscription,
|
||||||
|
Mailbox,
|
||||||
)
|
)
|
||||||
from server import create_app
|
from server import create_app
|
||||||
|
|
||||||
|
@ -262,6 +268,49 @@ nb_app: {stats_today.nb_app} - {increase_percent(stats_yesterday.nb_app, stats_t
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def sanity_check():
|
||||||
|
"""Different sanity checks
|
||||||
|
- detect if there's mailbox that's using a invalid domain
|
||||||
|
"""
|
||||||
|
for mailbox in Mailbox.filter_by(verified=True).all():
|
||||||
|
if not email_domain_can_be_used_as_mailbox(mailbox.email):
|
||||||
|
LOG.error(
|
||||||
|
"issue with mailbox %s domain. #alias %s, nb email log %s",
|
||||||
|
mailbox,
|
||||||
|
mailbox.nb_alias(),
|
||||||
|
mailbox.nb_email_log(),
|
||||||
|
)
|
||||||
|
|
||||||
|
LOG.d("Disable mailbox and all its aliases")
|
||||||
|
|
||||||
|
mailbox.verified = False
|
||||||
|
for alias in mailbox.aliases:
|
||||||
|
alias.enabled = False
|
||||||
|
|
||||||
|
db.session.commit()
|
||||||
|
|
||||||
|
email_msg = f"""Hi,
|
||||||
|
|
||||||
|
Your mailbox {mailbox.email} cannot receive emails.
|
||||||
|
To avoid forwarding emails to an invalid mailbox, we have disabled this mailbox
|
||||||
|
along with all of its aliases.
|
||||||
|
|
||||||
|
If this is a mistake, please reply to this email.
|
||||||
|
|
||||||
|
Thanks,
|
||||||
|
SimpleLogin team.
|
||||||
|
"""
|
||||||
|
|
||||||
|
try:
|
||||||
|
send_email(
|
||||||
|
mailbox.user.email, email_msg, email_msg.replace("\n", "<br>")
|
||||||
|
)
|
||||||
|
except Exception:
|
||||||
|
LOG.error("Cannot send disable mailbox email to %s", mailbox.user)
|
||||||
|
|
||||||
|
LOG.d("Finish sanity check")
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
LOG.d("Start running cronjob")
|
LOG.d("Start running cronjob")
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
|
@ -277,6 +326,7 @@ if __name__ == "__main__":
|
||||||
"notify_premium_end",
|
"notify_premium_end",
|
||||||
"delete_refused_emails",
|
"delete_refused_emails",
|
||||||
"poll_apple_subscription",
|
"poll_apple_subscription",
|
||||||
|
"sanity_check",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
@ -302,3 +352,6 @@ if __name__ == "__main__":
|
||||||
elif args.job == "poll_apple_subscription":
|
elif args.job == "poll_apple_subscription":
|
||||||
LOG.d("Poll Apple Subscriptions")
|
LOG.d("Poll Apple Subscriptions")
|
||||||
poll_apple_subscription()
|
poll_apple_subscription()
|
||||||
|
elif args.job == "sanity_check":
|
||||||
|
LOG.d("Check data consistency")
|
||||||
|
sanity_check()
|
||||||
|
|
|
@ -34,3 +34,9 @@ jobs:
|
||||||
shell: /bin/bash
|
shell: /bin/bash
|
||||||
schedule: "0 12 * * *"
|
schedule: "0 12 * * *"
|
||||||
captureStderr: true
|
captureStderr: true
|
||||||
|
|
||||||
|
- name: SimpleLogin Sanity Check
|
||||||
|
command: python /code/cron.py -j sanity_check
|
||||||
|
shell: /bin/bash
|
||||||
|
schedule: "0 2 * * *"
|
||||||
|
captureStderr: true
|
||||||
|
|
Loading…
Reference in New Issue