Шифрование автономного пароля IMAP

Я пытаюсь настроить автономный режим аутентификации через зашифрованный файл gpg (таким образом, я могу объединить все мое шифрование с моим процессом gpg-agent).

Из документации, кажется, единственный способ зашифровать пароли сервера – использовать gnome-keyring (который я бы предпочел не запускать на моем безголовом сервере). Есть ли способ связать мой пароль с файлом gpg так, как вы можете с помощью mutt?

Я знаю, что вы можете добавить дополнительные функции в offlineimap с расширением python-файла, но, боюсь, я не знаю, с чего начать.

3 Solutions collect form web for “Шифрование автономного пароля IMAP”

Еще один способ оставить работу offlineimap со знанием вашего пароля, но не помещая пароль на диск, заключается в том, чтобы оставить offlineimap запущенным в tmux / screen с включенным параметром ~/.offlineimaprc в ~/.offlineimaprc

Вам нужно добавить autorefresh = 10 в раздел [Account X] файла offlineimaprc, чтобы его можно было проверять каждые 10 минут. Также удалите любую конфигурационную строку с password или passwordeval .

Затем запустите offlineimap – он попросит пароль и сохранит его в памяти. Он не выйдет после первого запуска, но будет спать в течение 10 минут. Затем он проснется и снова запустится, но он все равно сохранит ваш пароль.

Таким образом, вы можете оставить сеанс tmux, запущенный с помощью функции offlineimap, ввести пароль один раз, а offlineimap будет там хорошо.

Я использую следующий метод, который работает достаточно хорошо:

1) Храните свои пароли в отдельных зашифрованных файлах gpg. Например ~/.passwd/<accountname>.gpg

2) Создайте файл расширения python с именем по вашему выбору (например, ~/.offlineimap.py ) со следующим содержимым:

 def mailpasswd(acct): acct = os.path.basename(acct) path = "/home/<username>/.passwd/%s.gpg" % acct args = ["gpg", "--use-agent", "--quiet", "--batch", "-d", path] try: return subprocess.check_output(args).strip() except subprocess.CalledProcessError: return "" 

3) Измените файл .offlineimaprc, чтобы сообщить ему о файле python, и сообщить ему, как читать ваши пароли

 [general] pythonfile = ~/.offlineimap.py # ... [Repository <reponame>] # add this line for each remote repository remotepasseval = mailpasswd("<accountname>") 

Если у вас есть несколько учетных записей, которые проверяются одновременно (отдельные потоки), и вы используете gpg-agent, тогда он будет запрашивать у вас парольную фразу для каждой учетной записи. Я echo "prime" | gpg -e -r foo@bar.com > ~/.passwd/prime.gpg агента, создавая файл ( echo "prime" | gpg -e -r foo@bar.com > ~/.passwd/prime.gpg ) и echo "prime" | gpg -e -r foo@bar.com > ~/.passwd/prime.gpg агент gpg, расшифровывая этот файл при запуске offlineimap. Для этого добавьте следующее в конец ~/.offlineimap.py :

 def prime_gpg_agent(): ret = False i = 1 while not ret: ret = (mailpasswd("prime") == "prime") if i > 2: from offlineimap.ui import getglobalui sys.stderr.write("Error reading in passwords. Terminating.\n") getglobalui().terminate() i += 1 return ret prime_gpg_agent() 

Любить ответ от @kbeta. Однако subprocess.check_output() был введен только в python 2.7 – так вот версия offlineimap.py которая будет работать со старыми версиями python:

 import os import subprocess def mailpasswd(acct): acct = os.path.basename(acct) path = "/home/hamish/.passwd/%s.gpg" % acct args = ["gpg", "--use-agent", "--quiet", "--batch", "-d", path] proc = subprocess.Popen(args, stdout=subprocess.PIPE) output = proc.communicate()[0].strip() retcode = proc.wait() if retcode == 0: return output else: return '' 
Interesting Posts

SSH на сервер, выполнять команды и отдавать управление пользователю

1 ГБ огромная страница – Является ли запись происходящей в 1 ГБ кусках?

`cd` все экраны для PWD текущего экрана

Где первая команда поиска выглядит, если есть каталоги с тем же именем?

Как подключиться к серверу imap с адресом электронной почты для пользователей unix?

SSH на несколько серверов, выполняющих несколько команд

Как отправить электронное письмо, которое будет спать в моем списке очередей?

Чрезвычайно громкая трещина и искаженный звук по S / PDIF с использованием ALSA

Как изменить тему рабочего стола в CentOS?

Хостинг на Apache / 2.2.22, сканирование говорит об устаревших

самый быстрый способ сделать tar.gz из дерева каталогов?

gpg использует временные файлы, а не трубку

Для имен файлов символы подчеркивания или тире чаще встречаются в именах файлов Unix?

Как найти слово с частью окружающего контекста с помощью grep?

Получить Debian Wheezy netinstall для обнаружения wlan

Linux и Unix - лучшая ОС в мире.