>собрал qpopper 4.0.4 с поддержкой ssl(на машине устновлен OpenSSL 0.9.6.h, OS RH
>7.3)
>завернул его через xinetd:
>service pop3s
>{
>flags = REUSE NAMEINARGS
>socket_type = stream
>protocol = tcp
>wait = no
>user = root
>instances = UNLIMITED
>server = /usr/local/sbin/popper/popper
>server_args = qpopper -s -l 2
>log_on_success += HOST PID EXIT DURATION
>log_on_failure += ATTEMPT HOST
>disable = no
>}
>
>в qpopper.config:
>set tls-support = alternate-port
>
>ребутим xinetd
>поднимается 995-ый порт
>при попытке сделать telnet 127.0.0.1 995
>Connection closed by foreign host.
>в /var/log/maillog:
>Jan 16 11:16:51 tt qpopper[15327]: Error setting certificate PEM file
>Jan 16 11:16:51 tt qpopper[15327]: ...SSL error: error:0200100E:system library:fopen:Bad address
>Jan 16 11:16:51 tt qpopper[15327]: ...SSL error: error:20074002:BIO routines:FILE_CTRL:system lib
>Jan 16 11:16:51 tt qpopper[15327]: ...SSL error: error:140AD002:SSL routines:SSL_CTX_use_certificate_file:system lib
>Jan 16 11:16:51 tt qpopper[15327]: Failed initializing TLS/SSL
>
>p.s. сертификат самоподписанный (сделан по аналогии с работающим апачевским)
>
>что не так?
1. Создаем заготовку конфига mail.cnf (название любое)
в ней все прозрачно, но by defaul строки:
---------------------------- quote for dialog ---------------------------
[ req_dn ]
countryName = Country Name (2 letter code)
countryName_default = NO
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = Some-State
localityName = Locality Name (eg, city)
0.organizationName = Organization Name (eg, company)
0.organizationName_default = FooBar Inc.
organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default =
0.commonName = Common Name (FQDN of your server)
1.commonName = Common Name (default)
1.commonName_value = localhost
---------------------------- end of quote --------------------------------
это неудобно, потому что приходится в диалоге заполнять поля по шаблону.
Тонкость в том, что в filename.cnf, чтобы избежать диалога, необходимо
добавить строку:
prompt = no
~~~~~~~~~~~
а в секции req_dn заполнить поля реальными значениями, которая задается в:
distinguished_name = req_dn
Если у нас в distinguished_name = my_data, то браться будет секция:
[ my_data ]
...
...
real parameters
---------------------------- cut mail.cnf ----------------------------
HOME= .
RANDFILE = $ENV::HOME/.rnd
[ req ]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
prompt = no
#[ req_dn ]
#countryName = Country Name (2 letter code)
#countryName_default = NO
#countryName_min = 2
#countryName_max = 2
#
#stateOrProvinceName = State or Province Name (full name)
#stateOrProvinceName_default = Some-State
#
#localityName = Locality Name (eg, city)
#
#0.organizationName = Organization Name (eg, company)
#0.organizationName_default = FooBar Inc.
#
#organizationalUnitName = Organizational Unit Name (eg, section)
##organizationalUnitName_default =
#
#0.commonName = Common Name (FQDN of your server)
#
#1.commonName = Common Name (default)
#1.commonName_value = localhost
#--lavr, удалить строки комментариев (#) и пользовать в удовольствие
[ req_dn ]
#C=двухбуквенный код страны
C=RU
#ST=Штат/Провинция/Область/Район
ST=Moscow Region
#L=город/село
L=Dubna Town
#O=Наименование Организации
O=Lavr Co.
#OU=Наименование ответственной организации
OU=Lavr CA
#CN=полное доменное(FQDN) имя телеги для которой генерится сертификат и на
# которой будет сервис работающий через SSL с этим сертификатом
CN=lavr.pp.ru
#Email=почтовый адрес ответственного лица
Email=lavr@dubna.ru
[ cert_type ]
nsCertType = server
------------------------------ end of cut -------------------------------
2. После того как конфиг готов, выполняем пару команд и сертификат в кармане:
openssl req -new -x509 -days 999 -nodes -config mail.cnf -out stunnel.pem -keyout stunnel.pem
3. Просмотр и получение требуемой информации из созданного сертификата:
openssl x509 -subject -dates -fingerprint -noout -in stunnel.pem
или
openssl x509 -text -in stunnel.pem
использование ключей зависит от того что и как хотим посмотреть
4. Проверка сервисов работающих через SSL:
openssl s_client -connect hostname:port -state -debug
- hostname - имя хоста или fqdn
- port - соответствующий порт сервиса с ssl: 443 или 993 или 995
Использование сертификатов в почтовых агентах:
1. Unix
Если у нас самоподписные сертификаты, то в pine/mutt и других MTA работающих через SSL, я обычно использую: imap/ssl/novalidate-cert (см. документацию), либо добавить сертификат как доверительный
2. Windows
Вырезаем из сгенеренного pem-файла сертификат, и кладем в доступное на шаре - для сети или на www для клиентов место для возможности download
После чего в клиенте находим место где всасываются сертификаты: в нашем случае расширение crt (это не принципиально - там любое можно задать, важно содержание этого файла, дальше получаю запрос как добавить - автоматом, Да, после чего данный сертификат кладется в trusted - доверительные)
Все, работа Windoze Mail-Agents по IMAP/POP3 via SSL происходит без вопросов.
PS. Могу ошибаться, но в четвертой версии OE какая-то хрень с работой IMAP и с работой SSL, must be upgrade (что конкретно - не помню)