Страница 1 из 1
FreeBSD, ssl и почта.
Добавлено: 2015-08-18 9:13:28
sasha198407
Доброго времени суток. Стоит связка freebsd7.0+apashe+mysql+postfix+postfixadmin+courier-imap+ssl+Cyrus-SASL2+fetchmail+ilohamail. Данная связка выступает, как локальный почтовый сервер. fetchmail забирает почту с внешних ящиков и раскладывает по локальным, а затем клиенты забирают из них письма. Все бы ничего, но внешние ящики находятся на gmail.com, который меняет ssl-сертификаты каждую неделю. Указанная выше связка не позволяет получать сертификаты автоматически. В результате чего приходится получать их вручную через
Код: Выделить всё
openssl s_client -connect pop.gmail.com:995 -showcerts > /home/.sslcerts/gmail.pem
c_rehash /home/.sslcerts/
Doing /home/.sslcerts/
gmail.pem => 7f549ca4.0
openssl x509 -in /home/.sslcerts/gmail.pem -noout -md5 -fingerprint
MD5 Fingerprint=44:A8:E9:2C:FB:A9:7E:6D:F9:DB:F3:62:B2:9E:F1:A9
и затем подставлять ключ в файл fetchmail
В интернете накопал скрипт, который автоматизирует получение сертификатов, но для моего понимания там все туго. Меня интересует можно ли решить проблему другими методами. Может поменять fetchmail на другой клиент или переустановить freebsd на другую версию или на CentOS например?
FreeBSD, ssl и почта.
Добавлено: 2015-08-18 9:19:36
lazhu
а что мешает загнать приведенный код в крон?
FreeBSD, ssl и почта.
Добавлено: 2015-08-18 10:32:39
sasha198407
сертификаты меняют в разные дни недели и разное время.
FreeBSD, ssl и почта.
Добавлено: 2015-08-18 10:51:38
guest
sasha198407 писал(а):Доброго времени суток. Стоит связка freebsd7.0+apashe+mysql+postfix+postfixadmin+courier-imap+ssl+Cyrus-SASL2+fetchmail+ilohamail. Данная связка выступает, как локальный почтовый сервер. fetchmail забирает почту с внешних ящиков и раскладывает по локальным, а затем клиенты забирают из них письма. Все бы ничего, но внешние ящики находятся на gmail.com, который меняет ssl-сертификаты каждую неделю. Указанная выше связка не позволяет получать сертификаты автоматически. В результате чего приходится получать их вручную через
Код: Выделить всё
openssl s_client -connect pop.gmail.com:995 -showcerts > /home/.sslcerts/gmail.pem
c_rehash /home/.sslcerts/
Doing /home/.sslcerts/
gmail.pem => 7f549ca4.0
openssl x509 -in /home/.sslcerts/gmail.pem -noout -md5 -fingerprint
MD5 Fingerprint=44:A8:E9:2C:FB:A9:7E:6D:F9:DB:F3:62:B2:9E:F1:A9
и затем подставлять ключ в файл fetchmail
В интернете накопал скрипт, который автоматизирует получение сертификатов, но для моего понимания там все туго. Меня интересует можно ли решить проблему другими методами. Может поменять fetchmail на другой клиент или переустановить freebsd на другую версию или на CentOS например?
Вы немного попутали термины:
- почтовый сервер:
a) MTA
b) POP3/IMAP
за которые Вы несете ответственность, обязаны и МОЖЕТЕ отвечать.
В Вашей конструкции, Вы не можете отвечать за почту хранящуюся и приходящую на ЧУЖИЕ почтовые
сервера, те за ЧУЖИЕ почтовые сервисы.
Итог: геморрой который Вы имеете, не важно какая ОС, Вы повесили на себя ЧУЖУЮ ЗОНУ
ОТВЕТСТВЕННОСТИ, технологии которой Вам не доступны, в этом беда.
Почмейстер отвечает только за свой конструктив и технологии, никакой ответственности за
fetchmail и почту хранящуюся на freemail'ах или чужих серверах.
FreeBSD, ssl и почта.
Добавлено: 2015-08-18 12:52:11
sasha198407
это, конечно, ценное замечание, но все же хочется научить систему работать с сертификатами автоматически. Ведь как-то же работают с ними клиенты типа MS Outlook, The Bat и многие другие.
FreeBSD, ssl и почта.
Добавлено: 2015-08-18 14:14:01
guest
sasha198407 писал(а):это, конечно, ценное замечание, но все же хочется научить систему работать с сертификатами автоматически. Ведь как-то же работают с ними клиенты типа MS Outlook, The Bat и многие другие.
как-то, кто-то - говорит об отсутствии информации и понимании работы того или иного продукта.
http://www.fetchmail.info/fetchmail-FAQ.html#K5
http://www.opennet.ru/base/net/fetchmail_setup.txt.html
https://grox.net/sysadm/net/fetchmail.ssl
все это можно расширить проверкой на expiration date
Чтобы решить проблему, нужно мало-мальски в нее вникнуть...
FreeBSD, ssl и почта.
Добавлено: 2015-08-19 8:10:41
sasha198407
прочитав
http://www.opennet.ru/base/net/fetchmail_setup.txt.html прихожу к выводу, что надо разбираться с sendmail.
FreeBSD, ssl и почта.
Добавлено: 2015-08-19 12:31:17
guest
тогда уж с postfix или exim + DNS + antivirus + antispam технологиями
И никакой ответственности за почту чужих серверов: freemail & etc, только за свою, например:
name@mydomain.ru
Всякие gmail,mail.ya.ru,mail.ru - это чужая сеть с собственным уставом и сетевой политикой, перевод
туда своего почтового домена == плясать под чужую ду-ду и выполнять все их требования, запрет
переадресации - forwarding, ибо много чем грозит и накаких fetchmail (не хватало еще чужое г...о разгребать)
FreeBSD, ssl и почта.
Добавлено: 2015-08-19 22:17:01
Dirty.Eager
sasha198407 писал(а):это, конечно, ценное замечание, но все же хочется научить систему работать с сертификатами автоматически. Ведь как-то же работают с ними клиенты типа MS Outlook, The Bat и многие другие.
Можно и автоматически. Надо, например, раз в сутки (по крону) проверять, не истекает ли в ближайшие сутки сертификат гмейла, и, если истекает, скачать свежий сертификат, извлечь из него fingerprint, записать новый fingerprint в .fetchmailrc.
Можно сделать все это примерно так:
Код: Выделить всё
#!/bin/sh
CERTSDIR="/home/.sslcerts"
PEMFILE=$CERTSDIR"/gmail.pem"
FETCHMAILRCFILE="./.fetchmailrc"
OPENSSL=`/usr/bin/which openssl`
C_REHASH="/usr/local/bin/c_rehash"
# some sanity checks
if [ ! -r $PEMFILE ] ; then
/bin/echo "PEM-file "$PEMFILE" should exist and be readable for "`whoami`
exit 1
fi
if [ ! -r $FETCHMAILRCFILE ] ; then
/bin/echo "file "$FETCHMAILRCFILE" should exist and be readable for "`whoami`
exit 1
else
/usr/bin/grep "^sslfingerprint" $FETCHMAILRCFILE>/dev/null
if [ 0 -ne $? ] ; then
/bin/echo "file "$FETCHMAILRCFILE" should contain \"sslfingerprint\" directive"
/bin/echo "You may add the dummy value for sslfingerprint manually and run this script again"
exit 1
fi
fi
# считать из PEM-файла дату окончания сертификата
EXPDATEPEM=`$OPENSSL x509 -in $PEMFILE -text | /usr/bin/grep -A 2 Validity | /usr/bin/tail -1 | /usr/bin/sed 's/.*Not After : //'`
# LC_ALL=C для парсинга даты из PEM-файла
LC_ALL_old=$LC_ALL
export "LC_ALL=C"
# дата/время за сутки до окончания сертификата в unix_time
EXPDATEM=$(/bin/date -u -j -v-1d -f"%b %d %H:%M:%S %Y %Z" "$EXPDATEPEM" +"%s")
# возвращаем, как было
export "LC_ALL=$LC_ALL_old"
# текущие дата/время в unix_time
CURDATE=$(/bin/date "+%s")
# если текущий сертификат истекает менее, чем через сутки
if [ $CURDATE -ge $EXPDATEM ] ; then
# соединиться с pop.gmal.com, извлечь сертификат, записать его в файл
$OPENSSL s_client -connect pop.gmail.com:995 </var/empty 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > $PEMFILE
# сделать rehash сертификатов
$C_REHASH $CERTSDIR >/dev/null
# извлечь fingerprint нового сертификата
NEWFP=$($OPENSSL x509 -in $PEMFILE -noout -md5 -fingerprint | sed 's/^MD5 Fingerprint=//')
# вписать новый fingerprint вместо старого в .fetchmailrc
/usr/bin/sed "s/^sslfingerprint.*/sslfingerprint \"$NEWFP\"/" $FETCHMAILRCFILE > $FETCHMAILRCFILE".tmp"
/bin/mv $FETCHMAILRCFILE".tmp" $FETCHMAILRCFILE
/usr/sbin/chmod 600 $FETCHMAILRCFILE
fi
exit 0
Запускать - раз в сутки или немного чаще.
FreeBSD, ssl и почта.
Добавлено: 2015-08-25 10:53:52
sasha198407
а если ящиков несколько, то этот скрипт подойдет?
FreeBSD, ssl и почта.
Добавлено: 2015-08-25 13:37:42
Dirty.Eager
sasha198407 писал(а):а если ящиков несколько, то этот скрипт подойдет?
Скрипт заменит все вхождения в .fetchmailrc, начинающиеся со строки sslfingerprint, на строку с фингерпринтом нового сертификата pop.gmail.com.
Если у вас в .fetchmailrc несколько разных pop3-ssl-серверов с разными фингерпринтами, то скрипт придется допилить. Если же все фингерпринты gmail-овские, то подойдет и этот.