aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralex <alex@pdp7.net>2025-09-07 10:43:59 +0200
committeralexpdp7 <alex@corcoles.net>2025-09-20 21:41:13 +0200
commit2a907585e053a56997f013cdf25eaf86f8931a5c (patch)
treefeb210411eec1e2c1fedc39c3ed2bd1f8958843a
parent119dccf3222084f28dc39a6988f18595dbae72cd (diff)
Migrate to Migadu
-rw-r--r--scripts/p7s/mail/__init__.py32
-rw-r--r--scripts/p7s/mail/mbsync.py27
2 files changed, 48 insertions, 11 deletions
diff --git a/scripts/p7s/mail/__init__.py b/scripts/p7s/mail/__init__.py
index 43c72fd6..c28c9003 100644
--- a/scripts/p7s/mail/__init__.py
+++ b/scripts/p7s/mail/__init__.py
@@ -8,21 +8,21 @@ from p7s.mail import mbsync
from p7s import systemd
-MOM = "5c4d9e3b-121d-45f5-bab6-03b42d291326"
-GMAIL = "f9bba940-769d-430a-82f4-5da10990e8fd"
-
+MOM = "5c4d9e3b-121d-45f5-bab6-03b42d291326"
+GMAIL = "f9bba940-769d-430a-82f4-5da10990e8fd"
+MIGADU = "e6157d00-5ab4-45da-947a-99667a52b828"
+DREAMHOST = "196b080f-1cda-4c43-8df8-d5b9ed5bb07b"
def setup_mbsync():
- gmail = bitwarden.get_item("https://vaultwarden.pdp7.net", "alex@corcoles.net", GMAIL)["login"]
- yahoo = bitwarden.get_item("https://vaultwarden.pdp7.net", "alex@corcoles.net", MOM)["login"]
+ migadu = bitwarden.get_item("https://vaultwarden.pdp7.net", "alex@corcoles.net", MIGADU)["login"]
+
(pathlib.Path.home() / (".mbsyncrc")).write_text(
- mbsync.mbsync_gmail(gmail["username"], gmail["password"], "~/Mail") +
- "\n" +
- mbsync.mbsync_yahoo(yahoo["username"], yahoo["password"], "~/Mail")
+ "\n".join([
+ mbsync.mbsync_migadu(migadu["username"], migadu["password"], "~/Mail"),
+ ])
)
- for username in [gmail["username"], yahoo["username"]]:
- (pathlib.Path.home() / "Mail" / username).mkdir(exist_ok=True, parents=True)
+ (pathlib.Path.home() / "Mail" / migadu["username"]).mkdir(exist_ok=True, parents=True)
systemd.create_user_unit("mbsync.service", _("""
[Unit]
@@ -54,9 +54,19 @@ def setup_mbsync():
def setup_imapfilter():
create_forward(
- "mom_to_gmail",
+ "mom_to_migadu",
_bitwarden_item_to_imapfilterserver("mom", bitwarden.get_item("https://vaultwarden.pdp7.net", "alex@corcoles.net", MOM)),
+ _bitwarden_item_to_imapfilterserver("migadu", bitwarden.get_item("https://vaultwarden.pdp7.net", "alex@corcoles.net", MIGADU)),
+ )
+ create_forward(
+ "dreamhost_to_migadu",
+ _bitwarden_item_to_imapfilterserver("dreamhost", bitwarden.get_item("https://vaultwarden.pdp7.net", "alex@corcoles.net", DREAMHOST)),
+ _bitwarden_item_to_imapfilterserver("migadu", bitwarden.get_item("https://vaultwarden.pdp7.net", "alex@corcoles.net", MIGADU)),
+ )
+ create_forward(
+ "gmail_to_migadu",
_bitwarden_item_to_imapfilterserver("gmail", bitwarden.get_item("https://vaultwarden.pdp7.net", "alex@corcoles.net", GMAIL)),
+ _bitwarden_item_to_imapfilterserver("migadu", bitwarden.get_item("https://vaultwarden.pdp7.net", "alex@corcoles.net", MIGADU)),
)
diff --git a/scripts/p7s/mail/mbsync.py b/scripts/p7s/mail/mbsync.py
index bd27893a..50c1e3fb 100644
--- a/scripts/p7s/mail/mbsync.py
+++ b/scripts/p7s/mail/mbsync.py
@@ -55,3 +55,30 @@ def mbsync_yahoo(login, password, store_path):
Expunge Both
SyncState *
""").lstrip()
+
+
+def mbsync_migadu(login, password, store_path):
+ return textwrap.dedent(f"""
+ IMAPAccount {login}
+ Host imap.migadu.com
+ SSLType IMAPS
+ User {login}
+ Pass {password}
+ PipelineDepth 5
+
+ IMAPStore {login}-remote
+ Account {login}
+
+ MaildirStore {login}-local
+ SubFolders Verbatim
+ Path {store_path}/{login}/
+ Inbox {store_path}/{login}/Inbox
+
+ Channel {login}
+ Far :{login}-remote:
+ Near :{login}-local:
+ Patterns *
+ Create Both
+ Expunge Both
+ SyncState *
+ """).lstrip()