aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Tom Willemse2019-08-14 23:45:13 -0700
committerGravatar Tom Willemse2019-08-14 23:45:13 -0700
commit946b7425dec6b3a97abdd631f1c00f7f4ca79a4f (patch)
tree15f73fbda4707f826fee94d87f650f43b48cdf2b
parent587bcae5e6bd3a930f08363c0494f618ff4b1d3d (diff)
downloadnew-dotfiles-946b7425dec6b3a97abdd631f1c00f7f4ca79a4f.tar.gz
new-dotfiles-946b7425dec6b3a97abdd631f1c00f7f4ca79a4f.zip
Fix (automatic) syncing of email
- Load the necessary environment variables from ‘gnome-keyring-daemon’ when loading fish. - Don’t sync the Archive directory from ryuslash.org, it’s too big and mbsync seems to get really confused about it. - Disable old email accounts from syncing with mbsync. - Fix the ‘get-mail-password’ and ‘set-mail-password’ scripts. - Use ‘secretstorage’ instead of ‘keyring’, this appears to be newer and easier to use.
-rw-r--r--fish/.config/fish/config.fish4
-rw-r--r--mbsync/.mbsyncrc120
-rwxr-xr-xmbsync/usr/bin/get-mail-password19
-rwxr-xr-xmbsync/usr/bin/set-mail-password25
4 files changed, 85 insertions, 83 deletions
diff --git a/fish/.config/fish/config.fish b/fish/.config/fish/config.fish
index 1a47d8d..270b456 100644
--- a/fish/.config/fish/config.fish
+++ b/fish/.config/fish/config.fish
@@ -9,3 +9,7 @@ set -x EDITOR emacsclient
set -x DOTNET_CLI_TELEMETRY_OPTOUT true
kitty + complete setup fish | source
+
+if test -n "$DESKTOP_SESSION"
+ set (gnome-keyring-daemon --start | string split "=")
+end
diff --git a/mbsync/.mbsyncrc b/mbsync/.mbsyncrc
index a06d4c2..a9ec9c2 100644
--- a/mbsync/.mbsyncrc
+++ b/mbsync/.mbsyncrc
@@ -18,7 +18,7 @@ Channel ryuslash
Master :ryuslash-remote:
Slave :ryuslash-local:
# Don't synchronize lda-dupes, it causes trouble.
-Patterns * !dovecot/lda-dupes
+Patterns * !Archive !dovecot/lda-dupes
Create Both
SyncState *
@@ -62,62 +62,62 @@ Group gmail
Channel gmail-inbox
Channel gmail-sent
-## Picturefix:
-IMAPAccount picturefix
-Host imap.gmail.com
-User tom@picturefix.nl
-PassCmd "~/usr/bin/get-mail-password picturefix"
-SSLType IMAPS
-CertificateFile /etc/ssl/certs/ca-certificates.crt
-
-IMAPStore picturefix-remote
-Account picturefix
-
-MaildirStore picturefix-local
-Path ~/documents/mail/picturefix
-Inbox ~/documents/mail/picturefix/inbox
-SubFolders Legacy
-
-# Synchronize only the gmail INBOX mailbox.
-Channel picturefix-inbox
-Master :picturefix-remote:
-Slave :picturefix-local:
-Patterns INBOX
-Create Both
-SyncState *
-
-# Synchronize only the sent mailbox.
-Channel picturefix-sent
-Master :picturefix-remote:"[Gmail]/Verzonden berichten"
-Slave :picturefix-local:sent
-Create Both
-SyncState *
-
-# Group the picturefix channels together so that synching with the
-# command-line is easier.
-Group picturefix
-Channel picturefix-inbox
-Channel picturefix-sent
-
-## Ninthfloor:
-IMAPAccount ninthfloor
-Host mail.ninthfloor.org
-User ryuslash
-PassCmd "~/usr/bin/get-mail-password ninthfloor"
-SSLType STARTTLS
-CertificateFile /etc/ssl/certs/ca-certificates.crt
-
-IMAPStore ninthfloor-remote
-Account ninthfloor
-
-MaildirStore ninthfloor-local
-Path ~/documents/mail/ninthfloor/
-Inbox ~/documents/mail/ninthfloor/inbox
-SubFolders Legacy
-
-Channel ninthfloor
-Master :ninthfloor-remote:
-Slave :ninthfloor-local:
-Patterns *
-Create Both
-SyncState *
+# ## Picturefix:
+# IMAPAccount picturefix
+# Host imap.gmail.com
+# User tom@picturefix.nl
+# PassCmd "~/usr/bin/get-mail-password picturefix"
+# SSLType IMAPS
+# CertificateFile /etc/ssl/certs/ca-certificates.crt
+
+# IMAPStore picturefix-remote
+# Account picturefix
+
+# MaildirStore picturefix-local
+# Path ~/documents/mail/picturefix
+# Inbox ~/documents/mail/picturefix/inbox
+# SubFolders Legacy
+
+# # Synchronize only the gmail INBOX mailbox.
+# Channel picturefix-inbox
+# Master :picturefix-remote:
+# Slave :picturefix-local:
+# Patterns INBOX
+# Create Both
+# SyncState *
+
+# # Synchronize only the sent mailbox.
+# Channel picturefix-sent
+# Master :picturefix-remote:"[Gmail]/Verzonden berichten"
+# Slave :picturefix-local:sent
+# Create Both
+# SyncState *
+
+# # Group the picturefix channels together so that synching with the
+# # command-line is easier.
+# Group picturefix
+# Channel picturefix-inbox
+# Channel picturefix-sent
+
+# ## Ninthfloor:
+# IMAPAccount ninthfloor
+# Host mail.ninthfloor.org
+# User ryuslash
+# PassCmd "~/usr/bin/get-mail-password ninthfloor"
+# SSLType STARTTLS
+# CertificateFile /etc/ssl/certs/ca-certificates.crt
+
+# IMAPStore ninthfloor-remote
+# Account ninthfloor
+
+# MaildirStore ninthfloor-local
+# Path ~/documents/mail/ninthfloor/
+# Inbox ~/documents/mail/ninthfloor/inbox
+# SubFolders Legacy
+
+# Channel ninthfloor
+# Master :ninthfloor-remote:
+# Slave :ninthfloor-local:
+# Patterns *
+# Create Both
+# SyncState *
diff --git a/mbsync/usr/bin/get-mail-password b/mbsync/usr/bin/get-mail-password
index 02f4033..ecfbb09 100755
--- a/mbsync/usr/bin/get-mail-password
+++ b/mbsync/usr/bin/get-mail-password
@@ -1,15 +1,12 @@
#!/usr/bin/python3
-import gi
-
-gi.require_version('GnomeKeyring', '1.0')
-
-import logging
-
-logger = logging.getLogger('keyring')
-logger.addHandler(logging.StreamHandler())
-
-import keyring
import sys
+import secretstorage
+
+connection = secretstorage.dbus_init()
+collection = secretstorage.get_collection_by_alias(connection, "login")
-print(keyring.get_password('offlineimap', sys.argv[1]))
+for foo in collection.search_items(
+ {"application": "mbsync", "account": sys.argv[1]}
+):
+ print(foo.get_secret().decode())
diff --git a/mbsync/usr/bin/set-mail-password b/mbsync/usr/bin/set-mail-password
index 022b5f7..c36e39b 100755
--- a/mbsync/usr/bin/set-mail-password
+++ b/mbsync/usr/bin/set-mail-password
@@ -1,16 +1,17 @@
#!/usr/bin/python3
-import gi
-
-gi.require_version('GnomeKeyring', '1.0')
-
-import logging
-
-logger = logging.getLogger('keyring')
-logger.addHandler(logging.StreamHandler())
-
-import keyring
import sys
-import getpass
+from getpass import getpass
+import secretstorage
+
+connection = secretstorage.dbus_init()
+collection = secretstorage.get_collection_by_alias(connection, "login")
+attributes = {"application": "mbsync", "account": sys.argv[1]}
-keyring.set_password('offlineimap', sys.argv[1], getpass.getpass())
+collection.create_item(
+ "Password for '{}' on '{}'".format(
+ attributes["account"], attributes["application"]
+ ),
+ attributes,
+ getpass().encode(),
+)