>Вот такая проблема. Хочу установить imap-демон для почтового сервера Sendmail на FreeBSD.
>Скачал uw-imap (imap.tar.z) с www.washington.edu/imap, разархивировал. Делаю make bsd, а он
>начинает инсталлировать и потом пишет, что чего то не хватает файлов.
>В общем я так понял дистрибутив не полный. Что делать? Нужно
>установить imap на сервере?
если прочтение документации не помогает, то для тех кто в танке:
cd /usr/ports/mail/cclient
make WITH_SSL=yes
make install
cd /usr/ports/mail/imap-uw
make WITH_NETSCAPE_BRAIN_DAMAGE=yes WITH_MICROSOFT_BRAIN_DAMAGE=yes WITH_SSL=yes [WITH_ALL_IMAPUTILS=yes - по желанию]
после произвести изменения в /etc/pam.conf закоментарив предыдущие строки
pop/imap и вставив:
imap auth required pam_unix.so
imap account required pam_unix.so try_first_pass
imap session required pam_deny.so
pop3 auth required pam_unix.so
pop3 account required pam_unix.so try_first_pass
pop3 session required pam_deny.so
в /etc/inetd.conf закоментарить pop3/imap и вставить:
pop3s stream tcp nowait root /usr/local/libexec/ipop3d ipop3d
imaps stream tcp nowait root /usr/local/libexec/imapd imapd
и выдать SIGHUP inetd демону:
kill -HUP `cat /var/run/inetd.pid`
после чего проверить pop3/imap:
[alone]~ > telnet localhost 110
Trying 62.84.100.160...
Connected to alone.dubna.ru.
Escape character is '^]'.
+OK POP3 alone.dubna.ru v2001.78 server ready
quit
+OK Sayonara
Connection closed by foreign host.
[alone]~ > telnet alone 143
Trying 62.84.100.160...
Connected to alone.dubna.ru.
Escape character is '^]'.
* OK [CAPABILITY IMAP4REV1 X-NETSCAPE LOGIN-REFERRALS STARTTLS AUTH=LOGIN] alone.dubna.ru IMAP4rev1 2001.315 at Tue, 5 Nov 2002 11:46:38 +0300 (MSK)
* logout
* BYE alone.dubna.ru IMAP4rev1 server terminating connection
* OK LOGOUT completed
Connection closed by foreign host.
[alone]~ >
проверка pop/imap via SSL:
openssl s_client -connect hostname:993 -state -debug (imaps)
openssl s_client -connect hostname:995 -state -debug (pop3s)
создание сертификата самостоятельно:
1. Создаем заготовку конфига openssl.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
в нижнем примере используется секция req_dn
---------------------------- cut stunnel.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
[ req_dn ]
C=RU
ST=Moscow Region
L=Dubna Town
O=Artefakt Co.
OU=Artefakt CA
CN=artefakt.ru
Email=lavr@dubna.ru
[ cert_type ]
nsCertType = server
------------------------------ end of cut ------------------------------
В req_dn выше использовались сокращения в секциях, типа:
Country Name: C
Region: ST
и тд и тп
2. После того как конфиг готов, выполняем пару команд и сертификат в кармане:
openssl req -new -x509 -days 999 -nodes -config artefact.cnf -out stunnel.pem -keyout stunnel.pem
openssl x509 -subject -dates -fingerprint -noout -in stunnel.pem
Итог: теперь осталось лишь закрыть доступ ИЗВНЕ (не путать с локальной сетью) любым способом: firewall, tcp ports=110(pop3) и 143(imap) или
через tcwrapper: /etc/hosts.allow
imapd: ...
pop3d: ...
и оставить снаружи лишь доступ через SSL
Все.