check inboxes & domains
This commit is contained in:
parent
c645f71225
commit
68f5f0c3f4
|
|
@ -43,26 +43,33 @@ API_KEY = os.environ['MAILCOW_API_KEY']
|
||||||
MAILCOW_API = os.environ['MAILCOW_API']
|
MAILCOW_API = os.environ['MAILCOW_API']
|
||||||
|
|
||||||
s3_client = boto3.client('s3', region_name=AWS_REGION)
|
s3_client = boto3.client('s3', region_name=AWS_REGION)
|
||||||
|
|
||||||
def domain_exists(domain):
|
def domain_exists(domain):
|
||||||
|
"""
|
||||||
|
Prüft per /get/domain/all, ob `domain` im System ist.
|
||||||
|
"""
|
||||||
url = f"{MAILCOW_API}/get/domain/all"
|
url = f"{MAILCOW_API}/get/domain/all"
|
||||||
headers = {'X-API-Key': API_KEY}
|
headers = {'X-API-Key': API_KEY}
|
||||||
resp = requests.get(url, headers=headers, timeout=5)
|
resp = requests.get(url, headers=headers, timeout=5)
|
||||||
resp.raise_for_status()
|
resp.raise_for_status()
|
||||||
domains = resp.json()
|
domains = resp.json()
|
||||||
# domains ist eine Liste von Objekten mit key 'domain_name'
|
return any(d.get('domain_name', '').lower() == domain.lower() for d in domains)
|
||||||
return any(d.get('domain_name') == domain for d in domains)
|
|
||||||
|
|
||||||
def inbox_exists(domain, local_part):
|
def inbox_exists(domain, local_part):
|
||||||
"""
|
"""
|
||||||
Prüft, ob für `local_part@domain` ein Postfach angelegt ist.
|
Liefert True, wenn domain im System ist UND local_part@domain ein Postfach hat.
|
||||||
"""
|
"""
|
||||||
|
# 1) Domain-Check
|
||||||
|
if not domain_exists(domain):
|
||||||
|
logger.info(f"Domain '{domain}' unknown – skip mailbox lookup")
|
||||||
|
return False
|
||||||
|
|
||||||
|
# 2) Nur dann Mailbox-Listing holen
|
||||||
url = f"{MAILCOW_API}/get/mailbox/all/{domain}"
|
url = f"{MAILCOW_API}/get/mailbox/all/{domain}"
|
||||||
headers = {'X-API-Key': API_KEY}
|
headers = {'X-API-Key': API_KEY}
|
||||||
resp = requests.get(url, headers=headers, timeout=5)
|
resp = requests.get(url, headers=headers, timeout=5)
|
||||||
resp.raise_for_status()
|
resp.raise_for_status()
|
||||||
mailboxes = resp.json()
|
mailboxes = resp.json()
|
||||||
return any(m.get('local_part') == local_part for m in mailboxes)
|
return any(m.get('local_part', '').lower() == local_part.lower() for m in mailboxes)
|
||||||
|
|
||||||
def mark_email_as_processed(bucket, key, status, processor='rest-api'):
|
def mark_email_as_processed(bucket, key, status, processor='rest-api'):
|
||||||
"""Setzt processed-Metadaten auf einen beliebigen Status."""
|
"""Setzt processed-Metadaten auf einen beliebigen Status."""
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue