Чтобы избежать случайного отслеживания почтового ящика для сервера IMAP, я думаю о настройке «прозрачного шифрования», которая:
(см. обоснование внизу).
Пункт (1) должен быть достаточно простым, учитывая procmail и некоторый скрипт фильтрации. Я не могу найти уровень техники для (2), который включает вмешательство в работу сервера IMAP (в моем случае dovecot: это, вероятно, означает плагин специального назначения).
Идеи, кто-нибудь?
Обоснование:
При такой настройке сообщения будут зашифрованы на сервере. но пользователям не придется устанавливать громоздкие (для не инициированных) подключаемые модули GnuPG на свои MUA. И взломщик, который получил все пары открытого / закрытого ключей и почтовый ящик, все равно должен будет взломать пароль, прежде чем он сможет получить доступ к контенту.
По умолчанию переменная% w недоступна, но вы можете ее добавить.
Я немного расширил пример, приведенный в вики Dovecot, чтобы показать один из способов управления ключами. Он проходит некоторые тесты с низкой интенсивностью (я могу доставлять, читать, перемещать почту).
#!/bin/bash
# Keys generated using:
#
# fingerprint=$(echo -n "${imap_password}" | gpg2 --batch --passphrase-fd 0 --quick-gen-key "Mail encryption key <${imap_user}>" ed25519 2>&1 | fgrep 'revocation certificate stored as' | sed -e 's/.*\///' -e 's/\..*//')
# echo -n "${imap_password}" | gpg2 --batch --passphrase-fd 0 --quick-add-key "${fingerprint}" cv25519
#
# Call this from dovecot with:
#
# plugin {
# mail_filter = mail-filter read %u %{userdb:pass}
# mail_filter_out = mail-filter-out write %u
# }
#
# And configure dovecot to pass the un-encrypted mail password through:
#
# passdb {
# driver = passwd-file
# args = scheme=CRYPT username_format=%u /etc/dovecot/users
# override_fields = userdb_pass=%w
# }
export GNUPGHOME="/srv/mail/.gnupg"
imap_user="$2"
tempfile=$(mktemp)
cat > "${tempfile}"
if [ "$1" == "write" ]; then
gpg2 --armor --batch --encrypt -r "${imap_user}" < "${tempfile}"
elif [ "$1" == "read" ]; then
imap_password="$3"
echo -n "${imap_password}" | gpg2 --quiet --batch --passphrase-fd 0 --decrypt "${tempfile}"
fi
rm -f "${tempfile}"
Очевидно, что есть много возможностей для улучшения этого - добавление проверки ошибок, отказ от буферизации сообщения на диске в виде открытого текста, правильный вызов GPG с выводом, разделенным двоеточиями, обнаружение незашифрованной почты на диске и т. Д.
Похоже, этот плагин dovecot отвечает всем требованиям:
https://wiki.dovecot.org/Plugins/MailFilter
За исключением того, что неясно, будет ли у него доступ к макросу% W (простой текстовый пароль - вероятно, нет, поскольку он зарезервирован для фазы аутентификации).