Как я могу использовать fetchmail (или другой почтовый захват) с OSX цепочкой для ключей для аутентификации?

Во многих прочитанных мною руководствах по fetchmail безопасное размещение открытого текста пароля учетной записи электронной почты в файле конфигурации. Тем не менее, я предпочитаю безопасность через слои [*** глупый пример:* если мой терминал работает, и кто-то, подозревающий такое электронное письмо, скользит и просто набирает "grep -i pass ~/.*", то, к сожалению, все мои базы принадлежат им! особенно если мой провайдер электронной почты использует openid (или я достаточно глуп, чтобы использовать тот же пароль для моего банка) ] **.

Теперь с помощью msmtp (в отличие от sendmail) я могу аутентифицироваться с помощью цепочки ключей OSX. Есть ли бесплатный / открытый источник "граббера" электронной почты, который позволяет мне использовать цепочки для ключей (или, по крайней мере, который позволяет мне MD5 пароль)?

5 ответов

Решение

Если вам достаточно получить почту через POP3, взгляните на отличный mpop. Он от того же автора, что и msmtp, а также поддерживает OSX цепочку для ключей для хранения учетных данных аутентификации.

Для IMAP4 вы можете использовать очень хороший OfflineIMAP и подключить его к цепочке ключей OSX, используя Python-хук William Snow Orvis.

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

С точки зрения простой утилиты, да, вы можете использовать Keychain. Я настоятельно рекомендую вам прочитать все security(1) Страница man, которая имеет дополнительные предостережения.

Вы можете ввести пароль с помощью программы Keychain или через командную строку:

# WARNING: exposes password in ps(1), history(1), etc.
$ security add-internet-password -a $USER -s pop3.example.com -w 'Mellon!'

Вы можете извлечь это с помощью:

# Note: by default, first use will prompt
$ security find-internet-password -s pop3.example.com -a $USER -g

Если вы всегда разрешаете, security(1) сможет получить эти учетные данные без дополнительных запросов. Это может быть риском для вашей системы. Однако вы можете выбрать, чтобы это всегда запрашивало ваш пароль перед запуском.

Наконец, используя это, вы можете обернуть fetchmail вызов с помощью скрипта трамплина, который устанавливает пароль для использования.

user=$USER
server=pop3.example.com
# WARNING: insecure tmpfile creation and usage
# As [DAM][1] mentions, see mkstemp(3)
tmpfile=/tmp/fetchmailrc.$$ 

password=$(security find-internet-password -s $server -a $USER -g 2>&1 \
           | perl -ne '/password: "(\S*)"/ and print $1')

# create temporary fetchmailrc and pass to fetchmail, etc...
cat <<EoF > $tmpfile
poll $server with proto POP3 and options no dns
  user $user with pass '$password' is $user here 
  options keep mda '/usr/bin/procmail -d %T'
EoF

fetchmail -d -f $tmpfile
rm -f $tmpfile

Хотя это и позволяет достичь заявленной цели, заключающейся в отсутствии очевидных файлов с паролями, я отметил, что риски безопасности, все еще присутствующие в этой конфигурации, следует учитывать.

@medina,

Вместо "tmpfile=/tmp/fetchmailrc.$$" я бы порекомендовал использовать mktemp(1), если он доступен.

Если связка ключей позволяет поднять пароль в виде открытого текста, то это возможно, но вы не можете локально использовать пароли MD5, так как сервер хочет получить его в своем собственном формате (обычно в виде открытого текста)

Чтобы использовать стандартный imap/smtp/pop3, вам нужен пароль в виде открытого текста. Поэтому, если вы хотите сохранить это локально, он должен быть в формате, который является обратимым, что не является хорошей новостью для использования цепочки для ключей. Однако, если почтовый сервер поддерживает его, вы можете пройти аутентификацию, используя сертификат X.509 и SSL. Этот сертификат может быть с паролем или без него и может храниться в связке ключей Mac OS X.

Я не могу ответить, поддерживает ли какое-либо программное обеспечение эту настройку, так как я не пользователь Mac. Кроме того, вам также понадобится ваш сервер для поддержки аутентификации X509.

Другие вопросы по тегам