%20%D1%81%D0%BE%20%D1%81%D0%B2%D1%8F%D0%B7%D0%BA%D0%BE%D0%B9%20%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9%20OSX%20%D0%B4%D0%BB%D1%8F%20%D0%B0%D1%83%D1%82%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8%3F.png)
Во многих руководствах по fetchmail, которые я читал, говорится, что размещение пароля учетной записи электронной почты в виде открытого текста в файле конфигурации безопасно. Однако я предпочитаю безопасность через слои[***глупый пример:* если мой терминал включен, и кто-то, заподозрив такую ерунду с электронной почтой, подходит и просто вводит "grep -i pass ~/.*", то, упс, вся моя база данных принадлежит ему! особенно если мой провайдер электронной почты использует OpenID (или я настолько глуп, что использую тот же пароль для своего банка)]**.
Теперь, с msmtp (в отличие от sendmail) я могу аутентифицироваться, используя связку ключей OSX. Есть ли бесплатный/open-source 'граббер' электронной почты, который позволяет мне использовать связки ключей (или, по крайней мере, позволяет мне MD5 пароля)?
решение1
Если вам достаточно получать почту через POP3, взгляните на отличныймпоп. Он от того же автора, что и msmtp, и также имеет поддержку связки ключей OSX для хранения учетных данных аутентификации.
Для IMAP4 вы можете использовать очень удобныйОффлайнIMAPи подключите его к связке ключей OSX с помощьюКрючок Python Уильяма Сноу Орвиса.
Лично я предпочитаю эти инструменты fetchmail (например, из-за скорости загрузки, набора функций, конфигурации), но ваши возможности могут отличаться.
решение2
С точки зрения простой утилиты, да, вы можете использовать Keychain. Я настоятельно рекомендую вам прочитать всю security(1)
страницу руководства, которая содержит дополнительные предостережения.
Ввести пароль можно с помощью программы 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
Хотя это и достигает вашей заявленной цели — не иметь очевидных файлов с паролями, я сделал этообратите внимание на риски безопасностивсе еще присутствует в этой конфигурации, которую вам следует рассмотреть.
решение3
Если связка ключей позволяет поднять открытый текстовый пароль, то это возможно, но вы не сможете взломать пароли MD5 локально, так как сервер требует их в своем собственном формате (обычно в открытом тексте).
решение4
@медина,
Вместо «tmpfile=/tmp/fetchmailrc.$$» я бы рекомендовал использовать mktemp(1), если он доступен.