]> xn--ix-yja.es Git - alex.git/commitdiff
Migrate to Migadu
authoralex <alex@pdp7.net>
Sun, 7 Sep 2025 08:43:59 +0000 (10:43 +0200)
committeralexpdp7 <alex@corcoles.net>
Sat, 20 Sep 2025 19:41:13 +0000 (21:41 +0200)
scripts/p7s/mail/__init__.py
scripts/p7s/mail/mbsync.py

index 43c72fd61df9609006c8792b137231f97af5f5a9..c28c9003f8ab8183e51a64c1870a9d497d0dd7e7 100644 (file)
@@ -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)),
     )
 
 
index bd27893a081e84b0a68ce685a2b54fc4c61af284..50c1e3fbd4b5c0906959c830b6a85c8dc6240a00 100644 (file)
@@ -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()