POSTFIX: http://www.postfix.org/
POPA3D: http://www.openwall.com/popa3d/
QPOPPER: http://www.eudora.com/qpopper
STUNNEL: http://www.stunnel.org/
SASL:
http://asg.web.cmu.edu/cyrus/
http://asg.web.cmu.edu/sasl/
Spis treści:
1. Wstęp
2. Kompilacja i skonfigurowanie SASL
3. Kompilacja i instalacja Postfixa
3.1 Tworzenie certyfikatów
4. /etc/postfix/main.cf - plik konfiguracyjny Postfixa
5. Uruchomienie SASL+Postfix
6. Qpopper + Tls czy Popa3d + Stunnel
6.1 Popa3d + Stunnel
6.1.1 Popa3d
6.1.2 Stunnel
6.2 Qpopper + Tls
7. Czynności kończące...
1. Wstęp
Opis dotyczyć będzie następujących wersji programów:
- postfix-2.2.4
- cyrus-sasl-2.1.21
- qpopper4.0.5
- stunnel 4.07 on i686-pc-linux-gnu PTHREAD+POLL+IPv4+LIBWRAP with OpenSSL 0.9.7e 25 Oct 2004 ( standardowa paczka w Slackware 10.1)
- popa3d - 0.6.4.1
Wszystko uruchomione i testowane na systemie: Slackware 10.1
Postfix będzie odpowiedzialny za odbieranie i dostarczanie poczty do użytkowników, wzbogacony o obsługę Tls będzie mógł to robić korzystając z szyfrowanego połączenia (stąd odpowiedni patch do obsługi Tls jest wymagany). Żebyśmy nie byli RBL`em, czyli nie przekazywali poczty nie zaadresowanej do nas i tym samym nie poddawali się tak łatwo atakom spamerów chcących wykorzystać naszą maszynę do wysyłania spamu dodać należy autoryzację użytkownika przy wysyłaniu poczty. W tym celu posłużymy się programem Sasl, zapewniającym autoryzację zarówno w postaci czystego hasła (PLAIN), jak i sposobem Outlooka (LOGIN). Wszystko to będzie oczywiście zabezpieczone poprzez Tls. Przyjmować będziemy połączenia szyfrowane Tls na portach:
- smtp (25) tzw. regular port (zarówno plain jak i tls obsługiwane)
- pop3 (110) tzw. regular port (z użyciem popa3d nieszyfrowane - plain)
- spop3 (995) tzw. dedicated port tylko dla tls - szyfrowane pop3
Dostarczanie poczty poprzez protokół smtp nie jest wszystkim, co jest potrzebne do szczęścia. Należy także dać możliwość użytkownikom korzystania z klientów programowych, uruchomionych na ich własnych maszynach.
W tym celu będzie wykorzystany Popa3d zabezpieczone tunelem (stunnel) lub alternatywnie wykorzystany będzie Qpopper wraz z tls.
Dodatkowo dodać należy obsługę zapytań do baz Open-Relay, zawierającej czarne listy spamerów.
Ściągamy pliki potrzebne do instalacji, po czym przegrywamy je standardowo do /usr/local/src/ oraz rozpakowujemy poleceniem:
Kod: Zaznacz cały
cd /usr/local/src
tar -xzf cyrus-sasl-2.1.21.tar.gz
tar -xzf postfix-2.2.4.tar.gz
Przed kompilacją i instalacją systemu obsługi poczty, zajmiemy się samym modułem autoryzacji, czyli....
2. Kompilacja i skonfigurowanie SASL
Kod: Zaznacz cały
cd /usr/local/src/cyrus-sasl-2.1.21
Kod: Zaznacz cały
./configure --disable-cram --disable-digest \
--disable-krb4 --enable-plain --disable-anon \
--enable-login --with-saslauthd=/var/saslauthd
--disable-cram - wyłącza autoryzację CRAM-MD5
--disable-digest - wyłącza autoryzację DIGEST-MD5
--disable-krb4 - wyłącza autoryzację KERBEROS V4
--enable-plain - pozwala na autoryzację za pomocą czystego tekstu
--disable-anon - wyłącza autoryzację ANONYMOUS
--enable-login - aktywuje możliwość logowania z poziomu Outlooka (wszystko M$ jest niekompatybilne...)
--with-saslauthd=/var/saslauthd - aktywuje używanie saslauth w stałym katalogu
Następnie kompilujemy i instalujemy demona, oraz tworzymy symlinki:
Kod: Zaznacz cały
make
make install
ln -s /usr/local/lib/sasl2 /usr/lib/sasl2
ln -s /usr/local/lib/libsasl2.so.2.0.21 /usr/lib/libsasl2.so.2
Tworzymy katalog dla saslauthd oraz plik konfiguracyjny dla autoryzacji smtp:
Kod: Zaznacz cały
mkdir /var/saslauthd
touch /usr/local/lib/sasl2/smtpd.conf
Zawartość powyższego pliku powinna być następująca:
Kod: Zaznacz cały
pwcheck_method: saslauthd
3. Kompilacja i instalacja Postfixa
Na wstępie zmieniamy katalog, w którym bedziemy pracować:
Kod: Zaznacz cały
cd /usr/local/src/postfix-2.2.4
Tworzymy nowego usera 'postfix', z nieużywanym dotąd UID i GID. Ja standardowo dodaję grupę 'postfix', i jako jedynego umieszczam w niej usera 'postfix'.
Kod: Zaznacz cały
groupadd postfix
useradd -u nowy_UID -g postfix -s /dev/null -d /dev/null postfix
Dla podkreślenia możemy jeszcze wyedytować ręcznie plik /etc/shadow i zmienić hash do hasła na jakiś wybrany symbol, np: '*' czy '!', oczywiscie dla użytkownika 'postfix'
Należy także utworzyć nową grupę o nazwie 'postdrop' z unikalnym GID:
Kod: Zaznacz cały
groupadd postdrop
Przygotowujemy postfixa z nastepujacymi opcjami (w jednej linijce):
Kod: Zaznacz cały
make makefiles CCARGS="-DUSE_TLS -I/usr/local/include -DUSE_SASL_AUTH -I/usr/local/include/sasl" AUXLIBS="-L/usr/local/lib -lsasl2 -lssl -lcrypto"
Jeśli wszystko przebiegło poprawnie możemy już uruchomić proces kompilacji i instalacji:
Kod: Zaznacz cały
make
make install
Proponowane przeze mnie odpowiedzi na pytania są takie (<enter> oznacza wciśnięcie entera i nie wpisywanie niczego):
Kod: Zaznacz cały
Please specify the prefix for installed file names. Specify this ONLY
if you are building ready-to-install packages for distribution to other
machines.
install_root: [/] <enter>
Please specify a directory for scratch files while installing Postfix. You
must have write permission in this directory.
tempdir: [/usr/local/src/postfix-2.2.4] <enter>
Please specify the final destination directory for installed Postfix
configuration files.
config_directory: [/etc/postfix] <enter>
Please specify the final destination directory for installed Postfix
daemon programs. This directory should not be in the command search path
of any users.
daemon_directory: [/usr/libexec/postfix] /var/lib/postfix/daemons
Please specify the final destination directory for installed Postfix
administrative commands. This directory should be in the command search
path of adminstrative users.
command_directory: [/usr/sbin] /var/lib/postfix/admin
Please specify the final destination directory for Postfix queues.
queue_directory: [/var/spool/postfix] <enter>
Please specify the final destination pathname for the installed Postfix
sendmail command. This is the Sendmail-compatible mail posting interface.
sendmail_path: [/usr/sbin/sendmail] <enter>
Please specify the final destination pathname for the installed Postfix
newaliases command. This is the Sendmail-compatible command to build
alias databases for the Postfix local delivery agent.
newaliases_path: [/usr/bin/newaliases] <enter>
Please specify the final destination pathname for the installed Postfix
mailq command. This is the Sendmail-compatible mail queue listing command.
mailq_path: [/usr/bin/mailq] <enter>
Please specify the owner of the Postfix queue. Specify an account with
numerical user ID and group ID values that are not used by any other
accounts on the system.
mail_owner: [postfix] <enter>
Please specify the group for mail submission and for queue management
commands. Specify a group name with a numerical group ID that is
not shared with other accounts, not even with the Postfix mail_owner
account. You can no longer specify "no" here.
setgid_group: [postdrop] <enter>
Please specify the destination directory for the Postfix HTML
files. Specify "no" if you do not want to install these files.
html_directory: [no] /etc/postfix/html_files
Please specify the destination directory for the Postfix on-line manual
pages. You can no longer specify "no" here.
manpage_directory: [/usr/local/man] <enter>
Please specify the destination directory for the Postfix README
files. Specify "no" if you do not want to install these files.
readme_directory: [no] /etc/postfix/readme_files
Kod: Zaznacz cały
#plik aliasow pocztowych
root: moje_konto
postfix: root
postmaster: root
Możemy dodatkowo sprawdzić, czy nasz postfix został poprawnie skompilowany i zawiera w sobie obsługę ssl, w tym celu wydajemy komende:
Kod: Zaznacz cały
ldd /var/lib/postfix/daemons/smtpd
libsasl2.so.2 => /usr/local/lib/libsasl2.so.2 (0x0012c000)
libssl.so.0 => /usr/lib/libssl.so.0 (0x00141000)
libcrypto.so.0 => /usr/lib/libcrypto.so.0 (0x00173000)
libpcre.so.0 => /usr/lib/libpcre.so.0 (0x00272000)
libdb-3.3.so => /lib/libdb-3.3.so (0x00283000)
libnsl.so.1 => /lib/libnsl.so.1 (0x00317000)
libresolv.so.2 => /lib/libresolv.so.2 (0x0032d000)
libc.so.6 => /lib/libc.so.6 (0x00340000)
libdl.so.2 => /lib/libdl.so.2 (0x0045e000)
/lib/ld-linux.so.2 (0x00110000)
Kod: Zaznacz cały
libsasl2.so.2 => /usr/local/lib/libsasl2.so.2 (0x0012c000)
libssl.so.0 => /usr/lib/libssl.so.0 (0x00141000)
libcrypto.so.0 => /usr/lib/libcrypto.so.0 (0x00173000)
Postfix jest juz zainstalowany.
3.1 Tworzenie certyfikatów (stworzylem tak jak w opisie postfixa)
Na czas tworzenia założyłem mały katalog:
Kod: Zaznacz cały
mkdir /certs
cd /certs/
Kod: Zaznacz cały
/etc/ssl/misc/CA.pl -newca
Kod: Zaznacz cały
CA certificate filename (or enter to create)
Making CA certificate ...
Generating a 1024 bit RSA private key
...++++++
........................++++++
writing new private key to './demoCA/private/cakey.pem'
Enter PEM pass phrase: TU PODAJEMY HASLO
Verifying - Enter PEM pass phrase: WERYFIKACJA HASLA
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:PL
State or Province Name (full name) [Some-State]:Bialystok
Locality Name (eg, city) []:Bialystok
Organization Name (eg, company) [Internet Widgits Pty Ltd]:host.domena.pl
Organizational Unit Name (eg, section) []:host.domena.pl
Common Name (eg, YOUR name) []:host.domena.pl
Email Address []:xil@host.domena.pl
Kod: Zaznacz cały
openssl req -new -nodes -keyout host-key.pem -out host-req.pem -days 1024
Kod: Zaznacz cały
Generating a 1024 bit RSA private key
....++++++
.++++++
writing new private key to 'host-key.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:PL
State or Province Name (full name) [Some-State]:Bialystok
Locality Name (eg, city) []:Bialystok
Organization Name (eg, company) [Internet Widgits Pty Ltd]:host.domena.pl
Organizational Unit Name (eg, section) []:host.domena.pl
Common Name (eg, YOUR name) []:host.domena.pl
Email Address []:xil@host.domena.pl
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: wpisane wczesniej HASLO
An optional company name []:
Kod: Zaznacz cały
openssl ca -out host-cert.pem -infiles host-req.pem
Kod: Zaznacz cały
Using configuration from /etc/ssl/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number:
df:65:29:cd:40:2b:63:7f
Validity
Not Before: Jul 9 13:28:28 2005 GMT
Not After : Jul 9 13:28:28 2006 GMT
Subject:
countryName = PL
stateOrProvinceName = Bialystok
organizationName = host.domena.pl
organizationalUnitName = host.domena.pl
commonName = host.domena.pl
emailAddress = xil@host.domena.pl
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
15:7A:FE:F1:32:7A:D8:93:57:14:7B:2C:AD:38:73:E4:F5:69:C9:F0
X509v3 Authority Key Identifier:
keyid:9B:37:9C:72:34:3B:88:C8:77:A6:5F:1A:E4:C4:F7:55:B8:7D:C5:C5
DirName:/C=PL/ST=Bialystok/L=Bialystok/O=host.domena.pl/OU=host.domena.pl/CN=host.domena.pl/emailAddress=xil@host.domena.pl
serial:DF:65:29:CD:40:2B:63:7E
Certificate is to be certified until Jul 9 13:28:28 2006 GMT (365 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
Kod: Zaznacz cały
mkdir /etc/postfix/ssl
Kod: Zaznacz cały
cp demoCA/cacert.pem host-key.pem host-cert.pem /etc/postfix/ssl
chmod 644 /etc/postfix/ssl/host-cert.pem /etc/postfix/ssl/cacert.pem
chmod 400 /etc/postfix/ssl/host-key.pem
Głównym plikiem konfiguracyjnym postfixa jest /etc/postfix/main.cf, który własnie będziemy modyfikować.
Wszystkie zmieniane opcje są przedstawiane poniżej (wraz z nazwami sekcji, do których należą), dodatkowo, jeśli coś należy zahaszować, również jest to ujęte w spisie. Pozostałe opcje są domyślne.
Kod: Zaznacz cały
# INTERNET HOST AND DOMAIN NAMES
# pełna nazwa naszego hosta wraz z domeną
myhostname = host.domena.pl
# SENDING MAIL
# skąd listy będą wysyłane?
myorigin = $myhostname
# RECEIVING MAIL
# definiujemy, na których interfejsach będziemy odbierać pocztę
inet_interfaces = all
# lista domen, dla których ten komputer/system będzie zródłem listów
mydestination = $myhostname
# REJECTING MAIL FOR UNKNOWN LOCAL USERS
# w przypadku nieistniejącego usera zwracamy kod błędu 550, czyli REJECT,
# standardowo jest 450(spróbuj ponownie później) - dla bezpieczeństwa
# przy uruchamianiu/testowaniu postfixa
unknown_local_recipient_reject_code = 550
# TRUST AND RELAY CONTROL
# lista interfejsów, na których nasłuchujemy...
mynetworks = 192.168.3.0/24, 127.0.0.0/8
# przekazujemy pocztę tylko dla domeny:
relay_domains = $mydestination
# ALIAS DATABASE
# wybieramy plik txt z aliasami...
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
# DELIVERY TO MAILBOX
# jak dostarczać pocztę?
# ja preferuje pliki w kat. domowym usera, stąd wybieram Mailbox
home_mailbox = Mailbox
# SHOW SOFTWARE VERSION OR NOT
# mała podmiana banera przy logowaniu się na port 25
mail_name = Sendmail
mail_version = 8.12.10
smtpd_banner = $myhostname ESMTP $mail_name $mail_version
#smtpd_banner = $myhostname ESMTP $mail_name
#smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)
# ======== OPCJE DODANE, OPCJE DLA SASL ORAZ TLS ========
# sprawdzamy domenę wysyłającego list na nasz adres,
# jeśli nie posiada wpisu A lub MX to odrzucamy jego list;
# jeśli wpis z jego nazwą usera, user@domena lub domena
# znajduje się w pliku /etc/postfix/spam/access
# to odrzucamy/kasujemy po odebraniu ten list (patrz dalej)
smtpd_sender_restrictions = reject_unknown_sender_domain, hash:/etc/postfix/spam/access
# chcemy sprawdzać IP wysyłającego przed możliwością
# relayowania listu, jeśli jego IP znajduje się w bazie
# relays.ordb.org (lub innej tu podanej) to odrzucamy list (REJECT), jeśli
# IP jest ok to prosimy o hasło użytkownika, jeśli ok to wysyłamy list,
# w przeciwnym wypadku odrzucamy go, chyba, że jest zaadresowany na adres relay_domains
smtpd_recipient_restrictions = reject_rbl_client relays.ordb.org,permit_sasl_authenticated,reject_unauth_destination
# -- SASL -----------------------------------
# włączamy obsługę SASL
smtpd_sasl_auth_enable = yes
# czy można wysłać list bez zgody SASL? tak, bo może to być list z localhost..
broken_sasl_auth_clients = yes
# nie chcemy anonymous..
smtpd_sasl_security_options = noanonymous
# TLS WZOROWANY NA NAJNOWSZYM OPISIE WBUDOWANEGO MECHANIZMU w postfixie
smtp_tls_CAfile = /etc/postfix/ssl/cacert.pem
smtp_tls_cert_file = /etc/postfix/ssl/host-cert.pem
smtp_tls_key_file = /etc/postfix/ssl/host-key.pem
smtp_tls_session_cache_database = btree:/var/run/smtp_tls_session_cache
smtp_use_tls = yes
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem
smtpd_tls_cert_file = /etc/postfix/ssl/host-cert.pem
smtpd_tls_key_file = /etc/postfix/ssl/host-key.pem
smtpd_tls_received_header = yes
smtpd_tls_session_cache_database = btree:/var/run/smtpd_tls_session_cache
smtpd_use_tls = yes
tls_random_source = dev:/dev/urandom
smtpd_tls_loglevel = 1
# EOF
5. Uruchomienie SASL+Postfix
Uruchamiamy saslauthd wydając polecenie:
Kod: Zaznacz cały
/usr/local/sbin/saslauthd -a shadow
Kod: Zaznacz cały
/usr/local/sbin/saslauthd -a shadow -n 2
Następnie tworzymy bazę aliasow postfixa:
Kod: Zaznacz cały
/var/lib/postfix/admin/postalias /etc/aliases
Teraz zajmemy się formatem wpisów dla bazy odrzucanych adresów/domen...
Tworzymy ten plik (już podaliśmy scieżke w main.cf!!!) :
Kod: Zaznacz cały
cd /etc/postfix
mkdir spam
cd spam
touch access
Kod: Zaznacz cały
# /etc/postfix/spam/access
# cala domena, z której listy będą odrzucane
amexmail.com REJECT
# konkretny adres, z którego listy będa odbierane, po czym
# zostaną dyskretnie automatycznie skasowane
tdaily@18plus.com DISCARD
info@electropages.com DISCARD
# EOF
Kod: Zaznacz cały
/var/lib/postfix/admin/postmap /etc/postfix/spam/access
Kod: Zaznacz cały
/var/lib/postfix/admin/postfix start
Kod: Zaznacz cały
telnet 0 25
Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'.
220 host.domena.pl ESMTP Sendmail 8.12.10
ehlo root@host.domena.pl
250- host.domena.pl
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN OTP
250-AUTH=LOGIN PLAIN OTP
250-XVERP
250 8BITMIME
Widzimy opcję 250-STARTTLS oraz banerek, który sami ustawiliśmy. Oznacza to, że wszystko idzie po naszej myśli ;-]
6. Qpopper + Tls czy Popa3d + Stunnel???
Można zapytać które z wyżej z wymienionych rozwiązań wybrać. Ja kiedyś używałem Qpopper`a z Tls i takie rozwiązanie było przedstawione w początkowej wersji tego FAQ. Z czasem okazało się, że Qpopper (chyba?) przestał być dalej wspierany, chodź jego żródła są nadal dostępne. Teoretycznie Qpopper postawić jest łatwiej od Popa3d, praktycznie okazało się, że nie zawsze. Z tego powodu dodałem opis jak uruchomić szyfrowane połączenie z wykorzystaniem Popa3d i Stunnel`a. Osobiście uważam, że Popa3d jest bezpieczniejsze od Qpopper oraz rozwiązanie z Popa3d i Stunnelem wydaje się być bardziej wydajne od używania Qpoppera. Opis jak uruchomić Qpopper zostaje jako alternatywa - lub dla osób lubiących się pobawić.
6.1.1Popa3d
Kod: Zaznacz cały
cd /usr/local/src
wget http://www.openwall.com/popa3d/popa3d-0.6.4.1.tar.gz
tar -xzf popa3d-0.6.4.1.tar.gz
cd /usr/local/src/popa3d-0.6.4.1
Ustawiamy
Kod: Zaznacz cały
#define POP_STANDALONE 1
Kod: Zaznacz cały
#define DAEMON_ADDR "0.0.0.0" /* INADDR_ANY */
Kod: Zaznacz cały
#define DAEMON_ADDR "127.0.0.1"
Kod: Zaznacz cały
#define POP_CHROOT "/var/empty/popa3d"
Kod: Zaznacz cały
#define MAIL_SPOOL_PATH "/var/mail"
Kod: Zaznacz cały
/*#define MAIL_SPOOL_PATH "/var/mail"*/
Jedna zmiana, znajdujemy zahaszowane pozycje wymienione niżej i ustawiamy tak jak podane poniżej:
Kod: Zaznacz cały
# Linux with glibc, FreeBSD, NetBSD
LIBS += -lcrypt
Kod: Zaznacz cały
make
make install
mkdir -m 755 /var/empty/popa3d
groupadd popa3d
useradd -g popa3d -d /dev/null -s /dev/null popa3d
Kod: Zaznacz cały
/usr/local/sbin/popa3d -D
Stunnel zakładam, że został zainstalowany wraz z systemem Slackware 10.1. Jeśli tak, istnieje przykładowy plik konfiguracji /etc/stunnel/stunnel.conf-sample. To z niego skorzystamy.
Kod: Zaznacz cały
cp /etc/stunnel/stunnel.conf-sample /etc/stunnel/stunnel_popa3d.conf
Kod: Zaznacz cały
; Certificate/key is needed in server mode and optional in client mode
; nasze własne certyfikaty
cert = /etc/postfix/ssl/host-cert.pem
key = /etc/postfix/ssl/host-key.pem
; zmieniony katalog..
chroot = /var/empty/stunnel
; ustawiamy z kim sie łączymy
[pop3s]
accept = 995
connect = 127.0.0.1:110
; zahaszujemy to co niżej:::!!!!
;[imaps]
;accept = 993
;connect = 143
;[ssmtp]
;accept = 465
;connect = 25
Kod: Zaznacz cały
mkdir -m 755 /var/empty/stunnel
chown nobody.nogroup /var/empty/stunnel
Kod: Zaznacz cały
/usr/sbin/stunnel /etc/stunnel/stunnel_popa3d.conf
Kod: Zaznacz cały
cd /usr/local/src/
tar -xzf qpopper4.0.5.tar.gz
cd /usr/local/src/qpopper4.0.5
Kod: Zaznacz cały
./configure --with-openssl=/usr/local/ssl \
--enable-specialauth --prefix=/usr/local/qpopper \
--enable-home-dir-mail=Mailbox --enable-log-login --without-pam
--with-openssl=/usr/local/ssl - ścieżka do OpenSSL
--enable-specialauth - chcemy korzystać z /etc/shadow
--prefix=/usr/local/qpopper - tu sobie życzymy binarki ;-]
--enable-home-dir-mail=Mailbox - skoro postfix tak nam ma dostarczać, to Qpopper musi także
--enable-log-login - chcemy poprawne zalogowania także logować!
--without-pam - wyłącza autoryzację PAM
Niestety, po wydaniu make install, skrypt nie zrobił automatycznie katalogów do trzymania Qpopper, musiałem więc je stworzyć sam. Kompilacja i instalacja wygląda więc tak:
Kod: Zaznacz cały
make
mkdir /usr/local/qpopper
mkdir /usr/local/qpopper/etc
mkdir /usr/local/qpopper/man
mkdir /usr/local/qpopper/man/man8
mkdir /usr/local/qpopper/sbin/
make install
touch /usr/local/qpopper/etc/qpopper.conf
Utworzyliśmy plik konfiguracyjny. Teraz należy go wyedytować. Opcję powinny być takie:
Kod: Zaznacz cały
set tls-support = stls
set tls-server-cert-file = /etc/postfix/ssl/host-cert.pem
W pliku tym ustawiliśmy korzystanie z tego samego klucza, co przy wysyłaniu, stąd gotowa ścieżka do pliku, z którego korzysta także postfix.
W tym miejscu należy się kilka dodatkowych uwag (dzieki Radek_R). Otóż posiadamy dwa krytyczne pliki - plik certyfikatu oraz plik klucza. By to uwzględnić możemy postąpić dwojako: stworzyć jeden plik z kluczem i certyfikatem jako jego zawartością lub dodać opcję w pliku konfiguracyjnym Qpoppera.
Jeśli wybierzemy pierwsze rozwiązanie to należy skopiować zawartość pliku /etc/postfix/ssl/host-key.pem na poczatek pliku /etc/postfix/ssl/host-cert.pem tak by w wyniku uzyskać plik host-cert.pem w postaci analogicznej do tej poniżej:
Kod: Zaznacz cały
-----BEGIN RSA PRIVATE KEY-----
MIICXgIBAAKB....
...
-----END RSA PRIVATE KEY-----
Certificate:
Data:
Version: 3 (0x2)
...
d1:81
-----BEGIN CERTIFICATE-----
MIIEATCCA2qgAwIBAgIBCjANBgkqhkiG9...
...
SNSweeFHTZfpnGjjSp9lb258gtGB
-----END CERTIFICATE-----
Kod: Zaznacz cały
set tls-private-key-file = /etc/postfix/ssl/host-key.pem
Kod: Zaznacz cały
# obsluga portu 25 - normal i Tls
pop3 stream tcp nowait root /usr/sbin/tcpd /usr/local/qpopper/sbin/popper -f /usr/local/qpopper/etc/qpopper.conf
# obsluga spop3 - dla klientów Outlook i innych, które
# korzystają z Tls na porcie dedykowanym
spop3 stream tcp nowait root /usr/sbin/tcpd /usr/local/qpopper/sbin/popper -f /usr/local/qpopper/etc/qpopper.conf -l2 -p2
Teraz killujemy superserver inetd i ponownie uruchamiamy. Mamy już możliwość sprawdzenia, czy Qpopper działa. Po wskazówki należy się udać do pliku /var/log/maillog ;-]
7. Czynności kończące...
Do /etc/rc.d/rc.local dodajemy:
Kod: Zaznacz cały
/usr/local/sbin/saslauthd -a shadow -n 1;
/var/lib/postfix/admin/postfix start;
/usr/local/sbin/popa3d -D;
/usr/sbin/stunnel /etc/stunnel/stunnel_popa3d.conf;
Autor: Marek K. [xil]
Podziękowania za poprawki: Radek_R, traser