FreeBSD, ssl и почта.

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
sasha198407
рядовой
Сообщения: 19
Зарегистрирован: 2009-11-11 9:52:49

FreeBSD, ssl и почта.

Непрочитанное сообщение sasha198407 » 2015-08-18 9:13:28

Доброго времени суток. Стоит связка 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 например?
Последний раз редактировалось f_andrey 2015-08-18 9:41:24, всего редактировалось 1 раз.
Причина: Автору. пожалуйста, выбирайте соответствующий раздел форума.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

lazhu
сержант
Сообщения: 252
Зарегистрирован: 2013-08-10 14:28:38
Контактная информация:

FreeBSD, ssl и почта.

Непрочитанное сообщение lazhu » 2015-08-18 9:19:36

а что мешает загнать приведенный код в крон?

sasha198407
рядовой
Сообщения: 19
Зарегистрирован: 2009-11-11 9:52:49

FreeBSD, ssl и почта.

Непрочитанное сообщение sasha198407 » 2015-08-18 10:32:39

сертификаты меняют в разные дни недели и разное время.

guest
проходил мимо

FreeBSD, ssl и почта.

Непрочитанное сообщение guest » 2015-08-18 10:51:38

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'ах или чужих серверах.

sasha198407
рядовой
Сообщения: 19
Зарегистрирован: 2009-11-11 9:52:49

FreeBSD, ssl и почта.

Непрочитанное сообщение sasha198407 » 2015-08-18 12:52:11

это, конечно, ценное замечание, но все же хочется научить систему работать с сертификатами автоматически. Ведь как-то же работают с ними клиенты типа MS Outlook, The Bat и многие другие.

guest
проходил мимо

FreeBSD, ssl и почта.

Непрочитанное сообщение guest » 2015-08-18 14:14:01

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

Чтобы решить проблему, нужно мало-мальски в нее вникнуть...

sasha198407
рядовой
Сообщения: 19
Зарегистрирован: 2009-11-11 9:52:49

FreeBSD, ssl и почта.

Непрочитанное сообщение sasha198407 » 2015-08-19 8:10:41

прочитав http://www.opennet.ru/base/net/fetchmail_setup.txt.html прихожу к выводу, что надо разбираться с sendmail.

guest
проходил мимо

FreeBSD, ssl и почта.

Непрочитанное сообщение guest » 2015-08-19 12:31:17

sasha198407 писал(а):прочитав http://www.opennet.ru/base/net/fetchmail_setup.txt.html прихожу к выводу, что надо разбираться с sendmail.
тогда уж с postfix или exim + DNS + antivirus + antispam технологиями
И никакой ответственности за почту чужих серверов: freemail & etc, только за свою, например: name@mydomain.ru

Всякие gmail,mail.ya.ru,mail.ru - это чужая сеть с собственным уставом и сетевой политикой, перевод
туда своего почтового домена == плясать под чужую ду-ду и выполнять все их требования, запрет
переадресации - forwarding, ибо много чем грозит и накаких fetchmail (не хватало еще чужое г...о разгребать)

Dirty.Eager
мл. сержант
Сообщения: 72
Зарегистрирован: 2008-10-25 3:05:59

FreeBSD, ssl и почта.

Непрочитанное сообщение Dirty.Eager » 2015-08-19 22:17:01

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
Запускать - раз в сутки или немного чаще.

sasha198407
рядовой
Сообщения: 19
Зарегистрирован: 2009-11-11 9:52:49

FreeBSD, ssl и почта.

Непрочитанное сообщение sasha198407 » 2015-08-25 10:53:52

а если ящиков несколько, то этот скрипт подойдет?

Dirty.Eager
мл. сержант
Сообщения: 72
Зарегистрирован: 2008-10-25 3:05:59

FreeBSD, ssl и почта.

Непрочитанное сообщение Dirty.Eager » 2015-08-25 13:37:42

sasha198407 писал(а):а если ящиков несколько, то этот скрипт подойдет?
Скрипт заменит все вхождения в .fetchmailrc, начинающиеся со строки sslfingerprint, на строку с фингерпринтом нового сертификата pop.gmail.com.
Если у вас в .fetchmailrc несколько разных pop3-ssl-серверов с разными фингерпринтами, то скрипт придется допилить. Если же все фингерпринты gmail-овские, то подойдет и этот.