Postfix to przeznaczony na systemy uniksopodobne serwer poczty elektronicznej (MTA), odpowiedzialny za przekazywanie i dostarczanie poczty elektronicznej.
Przykład oparty o system Debian – wheezy
Przykładowe dane konfiguracyjne :
adres IP serwera : 192.168.3.131
maska : 255.255.255.0
brama : 192.168.3.1
nazwa domeny : eproit.pl
nazwa serwera : mail
1) Konfiguracja serwera – Debian
Konfiguracja karty sieciowej (statyczne adresy) :
nano /etc/network/interfaces
iface eth0 inet static address 192.168.3.131 netmask 255.255.255.0 network 192.168.3.0 broadcast 192.168.3.255 gateway 192.168.3.1
Konfiguracja pliku hosts :
/etc/hosts
format:
adres_IP kanoniczna_nazwa_komputera [aliasy…]
127.0.0.1 localhost mail 127.0.1.1 mail 192.168.3.131 mail.eproit.pl eproit.pl
Konfiguracja pliku hostname :
nano /etc/hostname
Restart systemu :
reboot
Dodanie repozytoriów :
nano /etc/apt/sources.list
#~~~~~~Wheezy~~~~~~#
deb http://ftp.pl.debian.org/debian/ wheezy main non-free contrib deb-src http://ftp.pl.debian.org/debian/ wheezy main non-free contrib deb http://security.debian.org/ wheezy/updates main contrib non-free deb-src http://security.debian.org/ wheezy/updates main contrib non-free deb http://ftp.pl.debian.org/debian/ wheezy-updates main non-free contrib deb-src http://ftp.pl.debian.org/debian/ wheezy-updates main non-free contrib
apt-get update
Ustawienie daty/godziny w Debianie :
ręczna zmiana (przykład) :
date --set 2015-04-02 date --set 21:08:00
Ustawienie zegara systemowego z serwera NTP np. tempus1.gum.gov.pl :
apt-get install ntpdate ntpdate tempus1.gum.gov.pl
2) Instalacja Postfix
apt-get install postfix postfix-mysql
a)Wybieramy konfigurację serwera poczty elektronicznej
Dostępne opcje :
brak konfiguracji:
Opcja powinna być wybrana w sytuacji kiedy chcemy pozostawić obecną konfigurację bez zmian.
strona internetowa:
Poczta jest wysyłana i otrzymywana bezpośrednio za pomocą SMTP.
strona ze smarthost:
Poczta jest otrzymywana bezpośrednio za pomocą SMTP lub przez narzędzie takie jak fetchmail. Poczta wychodząca jest wysyłana przez smarthost.
system rozproszony:
Cała poczta jest wysyłana do innego komputera, zwanego „smarthost” w celu doręczenia.
Wybierz typ : strona internetowa
b)Wybierz systemową nazwę pocztową
Powinna to być pojedyncza, pełna nazwa domenowa (ang. fully qualified domain name – FQDN).
Dlatego, jeśli adresem pocztowym lokalnego komputera jest np. firma@eproit.pl, poprawną wartością dla tej opcji jest eproit.pl
W tym przykładzie będzie to : eproit.pl
2.1) Konfiguracja podstawowych parametrów
Konfigurujemy podstawowe parametry w pliku /etc/postfix/main.cf
a) Parametr myorigin : jaka nazwa domeny używana będzie przy użyciu poczty wychodzącej
ustawienie domyślne :
myorigin = /etc/mailname
b) Parametr mydestination : w tym parametrze określamy dla jakich domen serwer pocztowy będzie dostarczał pocztę lokalnie. Domyślnie odbierana jest poczta na tej samej maszynie.
ustawienie domyślne :
mydestination = $myhostname localhost.$mydomain localhost
wykonujemy w konsoli :
postconf -e mydestination = eproit, \$myhostname, localhost.localdomain, localhost
c) Parametr mynetworks :
Bardzo ważny parametr !
W tym parametrze umieszcza się tylko adresy IP, którym się ufa. Lista „zaufanych” zdalnych klientów SMTP, które mają więcej uprawnień niż „obcy klient”.
Zobacz również na parametr mynetworks_style.
Przykłady :
mynetworks = 127.0.0.0/8 168.100.189.0/28
mynetworks = !192.168.0.1, 192.168.0.0/28
mynetworks = 127.0.0.0/8 168.100.189.0/28 [::1]/128 [2001:240:587::]/64
mynetworks = $config_directory/mynetworks
mynetworks = hash:/etc/postfix/network_table
wykonujemy w konsoli :
postconf -e mynetworks = 127.0.0.0/8
d) Parametr relayhost : Domyślnie Postfix próbuje dostarczyć pocztę do Internetu. W zależności od lokalnych warunków to może być niemożliwe.Przykładowo system może być wyłączony, może być za firewallem lub może być połączony z operatorem Internetowym, który nie zezwala bezpośrednio wysyłać maile do Internetu. Należy w tym przypadku skonfigurować Postfix do dostarczania poczty przez pośrednika.
Przykłady (wybierz jedną z opcji) :
relayhost = (domyślnie: bezpośrednio dostarczenie do Internetu)
relayhost = $mydomain (dostarczenie za pośrednictwem lokalnego mailhuba)
relayhost = [mail.$mydomain] (dostarczenie za pośrednictwem lokalnego mailhuba)
relayhost = [mail.isp.tld] (dostarczenie za pośrednictwem dostawcy mailhuba)
w tym przykładzie pozostawiam wartość domyślną.
e) Parametr myhostname : parametr ten określa pełną kwalifikowaną nazwę domeny komputera działającego pod kontrolą systemu Postfix.
Zmienna $myhostname jest ustawiona domyślnie. Jest to nazwa komputera lokalnego. Jeśli twoja nazwa lokalnej maszyny nie jest w pełni kwalifikowaną domeną, lub jeśli uruchamiasz Postfix na wirtualnym interfejsie to należy podać pełną nazwę domeny, której system poczty powinien używać.
wykonujemy w konsoli :
postconf -e myhostname = mail.eproit.pl
f) Parametr mydomain : parametr ten określa rodzica domeny z $myhostname.
Domyślnie pochodzi z $myhostname.
postconf -e mydomain = eproit.pl
W przypadku wprowadzenia zmian do pliku main.cf lub master.cf, wykonaj następujące polecenie jako użytkownik root, aby przeładować system pocztowy :
postfix reload
Aby zrestartować Postfixa wykonujemy:
service postfix restart
Aby wyświetlić konfigurację (pliku main.cf) wykonujemy :
postconf -n
Aby sprawdzić dziennik logów, należy wykonać :
tail -f /var/log/mail.log
2.2) Utworzenie użytkownika oraz grupy vmail. Utworzenie katalogu w którym trzymana będzie poczta
Tworzymy użytkownika systemowego (vmail) oraz grupę (vmail). Do tego użytkownika będą należały wszystkie wirtualne skrzynki pocztowe znajdujące się w /var/vmail.
Przyjmujemy że GID (Group ID) 7030 jest wolny i taki przypisujemy grupie. Dla użytkownika przypisujemy również UID (User ID) = 7030. Tworzymy katalog /var/vmail
groupadd -g 7030 vmail
useradd -m -d /var/vmail -s /bin/false -u 7030 -g vmail vmail
Nadanie praw do katalogu :
chmod 2770 /var/vmail/
3) Wygenerowanie certyfikatów
Przed utworzeniem certyfikatów warto zmodyfikować plik konfiguracyjny openssl.cnf (opcjonalnie)
Można ustawić zmienne domyślne, które będą wprowadzane automatycznie przy tworzeniu certyfikatów :
nano /etc/ssl/openssl.cnf
Przykład :
[ req_distinguished_name ] countryName_default = PL stateOrProvinceName_default = DOLNOSLASKIE localityName_default = WROCLAW 0.organizationName_default = eproit.pl organizationalUnitName_default = eproit.pl commonName_default = eproit.pl emailAddress_default = admin@eproit.pl
Można ustawić ile dni będzie ważny wygenerowany certyfikat np. 365 dni:
default_days = 365
3.1) Utworzenie miejsca trzymania certyfikatów
cd /etc/ssl mkdir CA cd CA mkdir demoCA cd demoCA mkdir newcerts mkdir private echo '01' serial touch index.txt cd ..
3.2) Utworzenie własnego CA (Centrum Autoryzacji) – opcjonalnie
W konsoli wykonujemy :
openssl req -new -x509 -extensions v3_ca -keyout demoCA/private/cakey.pem -out cacert.pem -days 365
Objaśnienie opcji :
req – polecenie generujące certyfikat lub żądanie o podpis certyfikatu
new – generowanie nowego żądania certyfikatu
x509 – wygenerowanie podpisanego certyfikatu
keyout – plik wyjściowy klucza
out – plik wyjściowy certyfikatu
days – ważność certyfikatu podana w dniach
Po wykonaniu tego polecenia zostanie utworzony klucz prywatny (cakey.pem) oraz certyfikat CA (cacert.pem).
Certyfikat ważny będzie przez rok.
Robimy kopię klucza i certyfikatu :
cp -i demoCA/private/cakey.pem demoCA/private/cakey.eproit.pl.pem cp -i cacert.pem cacert.eproit.pl.pem cp -i cacert.pem cacert.eproit.pl.crt
3.3) Zabezpieczenie prywatnego klucza CA
chmod 600 demoCA/private/*
3.4) Udostępnienie certyfikatu
Utworzony certyfikat CA wrzucamy do katalogu do którego ma dostęp serwer WWW-APACHE. Certyfikat będą mogli sobie zainstalować klienci w przeglądarkach (zaufane CA):
cp -i cacert.eproit.pl.crt /var/www/
Zabezpieczamy następnie dostęp do certyfikatu na serwerze :
chmod 0644 /var/www/cacert.eproit.pl.crt
3.5) Dodanie certyfikatu do miejsca przechowywania CA
mkdir /usr/share/ca-certificates/self cp -i cacert.eproit.pl.crt /usr/share/ca-certificates/self/ dpkg-reconfigure ca-certificates
Na pytanie : Czy ufać nowym certyfikatom urzędów certyfikacji, wybierz TAK.
Następnie wybieramy z listy certyfikat do aktywowania (Spacja) ten który chcemy potwierdzić jako zaufany i klikamy Enter.
3.6) Tworzymy NOWE żądanie podpisania certyfikatu
openssl req -new -nodes -out req.pem
Jako Common Name podajemy : mail.eproit.pl
Polecenie utworzy plik :
privkey.pem – prywatny klucz
req.pem – żądanie podpisania certyfikatu
Wykonujemy kopię klucza :
cp -i privkey.pem privkey.eproit.pl.pem
Następnie zmieniamy prawa do pliku :
chmod 600 privkey.*
3.7) Podpisanie certyfikatu własnym CA
openssl ca -out certyfikat_serwer.pem -cert cacert.pem -infiles req.pem
Utworzony certyfikat to : certyfikat_serwer.pem
3.8) Dekodowanie utworzonego certyfikatu (certyfikat_serwer.pem)
openssl x509 -in certyfikat_serwer.pem -out mail.eproit.pl.pem
Certyfikat do użycia : mail.eproit.pl.pem
3.9) Przygotowanie certyfikatu i kluczy dla usług
– Dla Postfix i Dovecot (już są utworzone)
– Dla Apache
Dla Apache należy połączyć certyfikat i klucz w jeden plik.
Łączymy klucz prywatny (privkey.eproit.pl.pem) z certyfikatem mail.eproit.pl.pem
cat privkey.eproit.pl.pem mail.eproit.pl.pem > apache_mail.eproit.pl.pem
3.10) Zabezpieczenie dostępu do katalogu /etc/ssl/CA
chmod -R 600 /etc/ssl/CA
4) Instalacja PostfixAdmin
Ściągamy PostfixAdmin:
http://sourceforge.net/projects/postfixadmin/files/postfixadmin/
Aktualna wersja 2.91 – (stabilna)
wget http://heanet.dl.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-2.91/postfixadmin_2.91-1_all.deb
Instalujemy potrzebne pakiety :
apt-get install apache2 mysql-server php5-mysql
apt-get install php5-common php5-imap php5-cli php5 php5-cgi libapache2-mod-php5 wwwconfig-common dbconfig-common postfix-mysql
Instalujemy PostfiAdmin :
Tworzymy najpierw bazę danych i konto użytkownika. Logujemy się do serwera bazy danych
mysql -u root -p
i wykonujemy :
create database postfixadmin;
grant all privileges on postfixadmin.* to 'postfixadmin'@'localhost' identified by 'fdjyr';
flush privileges;
Instalujemy pakiet postfixadmin :
dpkg -i postfixadmin_2.92-1_all.deb
Przy instalacji Postfixadmin wybieramy serwer WWW (APACHE2) do automatycznej konfiguracji (spacją)
Przy Configure database for postfixadmin with dbconfig-common? wybieramy TAK
Przy Database type to be used by postfixadmin: wybieramy mysql
Po zakończeniu instalacji otwieramy przeglądarkę internetową i wpisujemy adres :
http://ADRES_IP_SERWERA/postfixadmin/setup.php
Sprawdzamy na stronie czy wszystko się wykonało (done). Jeśli tak to zakładamy hasło instalacyjne.
Generujemy Hash.
Wchodzimy do katalogu /usr/share/postfixadmin
cd /usr/share/postfixadmin
Edytujemy plik config.inc.php :
nano config.inc.php
Edytujemy parametr (przykład) :
$CONF['setup_password'] ='95f3a3884d20183445b8f07889e0b030:0e5f8a2160ba8aa550991384db76765f78a03bba';
Po zakończeniu ponownie otwieramy przeglądarkę internetową i wpisujemy adres :
http://ADRES_IP_SERWERA/postfixadmin/setup.php
Sprawdzamy czy wszystko się wykonało.Jeśli tak, zakładamy konto superadmina.
Podajemy hasło instalacyjne, które wcześniej ustaliliśmy a następnie adres mailowy administratora np. admin@eproit.pl oraz hasło.
Klikamy dodaj administratora.
Po dodaniu konta administratora logujemy się :
http://ADRES_IP_SERWERA/postfixadmin/login.php
4.1) Zabezpieczenie dodatkowym hasłem zasobu serwera WWW – Postfixadmin
Metoda zabezpieczenia : Basic Auth
Przykładowe dane do logowania :
login : postfixadmin
hasło : fd#@f5a
Dostęp do panelu administracyjnego Postfixadmin będzie posiadał tylko użytkownik o adresie 192.168.3.100
Do panelu użytkownika postfixadmin wszyscy użytkownicy będą mogli się łączyć.
Przechodzimy do katalogu :
cd /usr/share/postfixadmin
Tworzymy hasło dla użytkownika postfixadmin :
htpasswd -c .htpasswd postfixadmin
root@mail:/usr/share/postfixadmin# htpasswd -c .htpasswd postfixadmin
New password:fd#@f5a
Re-type new password:fd#@f5a
Adding password for user postfixadmin
Edytujemy plik apache2.conf :
nano /etc/postfixadmin/apache.conf
Alias /postfixadmin /usr/share/postfixadmin Directory /usr/share/postfixadmin/ Files ~ login.php Order Deny,Allow Deny from All Allow from 192.168.3.100 AuthUserFile /usr/share/postfixadmin/.htpasswd AuthGroupFile /dev/null AuthName Dostep do PostfixAdmin wymaga autoryzacji AuthType Basic Require valid-user /Files /Directory Directory /usr/share/postfixadmin/users/ Files ~ login.php Order Allow,Deny Allow from All Satisfy Any /Files /Directory # END FOR POSTFIXADMIN
service apache2 restart
Dodatkowo (druga opcja):
Jeżeli chcemy zabezpieczyć również dostęp do strony użytkownika postfixadmin,
w konfiguracji apache.conf (nano /etc/postfixadmin/apache.conf) zmień :
Order Allow,Deny Allow from All Satisfy Any
na :
Order Deny,Allow Allow from All AuthUserFile /usr/share/postfixadmin/users/.htpasswd AuthGroupFile /dev/null AuthName Dostep do strony uzytkownika PostfixAdmin wymaga autoryzacji AuthType Basic Require valid-user
Dodatkowo należy dla każdego użytkownika, utworzyć login i hasło :
Przechodzimy do katalogu :
cd /usr/share/postfixadmin/users
Tworzymy hasło dla użytkownika :
htpasswd .htpasswd nazwa_loginu
np. htpasswd .htpasswd anna.kowalska
Hasła i loginy będą się znajdować w jednym pliku (htpasswd bez opcji -c).
Drugi możliwy sposób przechowywania haseł:
Przechowywanie loginów i haseł w bazie danych – np. MySQL.
– Wykorzystanie libapache2-mod-auth-mysql i bazy danych
Opis wkrótce.
Zmiana treści wysyłanej wiadomości powitalnej po utworzeniu skrzynki pocztowej uzytkownika:
/etc/postfixadmin/config.inc.php
Szukamy parametr :
$CONF['welcome_text'] = EOM
przykładowa treść :
Witaj,
Twoje nowe konto pocztowe.
Pamiętaj o zmianie hasła.
Na stronie:
http://postfixadmin.eproit/users/login.php
Zmienisz hasło, przekierowanie, autoresponder.
EOM;
4.2) Utworzenie wirtualnej domeny oraz kont pocztowych
Serwer będzie obsługiwał wirtualne domeny oraz wirtualnych użytkowników.
Logujemy się : http://ADRES_IP_SERWERA/postfixadmin/login.php
Lista domen -> nowa domena
Lista zbiorcza -> dodaj konto
przykładowe konto pocztowe :
anna.kowalska@eproit.pl
Pamiętaj o skonfigurowaniu rekordów MX w DNS. Musisz również być właścicielem tej domeny.
4.3) Mapowania:
Przechodzimy do :
cd /etc/postfix
A) Tworzymy pierwszy plik : mysql_virtual_alias_maps.cf
Zwracający aliasy.
nano /etc/postfix/mysql_virtual_alias_maps.cf
user = postfixadmin password = fdjyr hosts = 127.0.0.1 dbname = postfixadmin query = SELECT goto FROM alias WHERE address='%s' AND active = 1
Aby sprawdzić czy poprawnie działa kwerenda należy wykonać w konsoli :
postmap -q test@eproit.pl mysql:/etc/postfix/mysql_virtual_alias_maps.cf
Wynikiem powinny być adresy e-mail pod które poczta zostanie przekierowana.
B) Tworzymy drugi plik : mysql_virtual_domains_maps.cf
Zwracający nasze domeny wirtualne.
nano /etc/postfix/mysql_virtual_domains_maps.cf
user = postfixadmin password = fdjyr hosts = 127.0.0.1 dbname = postfixadmin query = SELECT domain FROM domain WHERE domain='%s' #optional query to use when relaying for backup MX #query = SELECT domain FROM domain WHERE domain='%s' and backupmx = '0' and active = '1'
C) Tworzymy trzeci plik: mysql_virtual_mailbox_maps.cf
nano /etc/postfix/mysql_virtual_mailbox_maps.cf
user = postfixadmin password = fdjyr hosts = 127.0.0.1 dbname = postfixadmin query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
Nadajemy właściciela oraz uprawnienia do wcześniej utworzonych plików:
cd /etc/postfix chmod 640 mysql_* chown root:postfix mysql_*
4.4) Wirtualne domeny, użytkownicy – Współpraca z Postfix – konfiguracja pliku /etc/postfix/main.cf
W konsoli wykonujemy :
postconf -e virtual_minimum_uid = 7030 postconf -e virtual_gid_maps = static:7030 # Utworzony wcześniej użytkownik systemowy (uid) vmail oraz grupa (gid) vmail Do nich należą wszystkie wirtualne skrzynki pocztowe znajdujące się w /var/vmail. postconf -e virtual_uid_maps = static:7030 postconf -e virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf # mapowanie aliasów użytkowników postconf -e virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf #mapowanie wirtualnych domen postconf -e virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf #mapowanie wirtualnych użytkowników do wirtualnych skrzynek pocztowych postconf -e virtual_mailbox_base = /var/vmail/
Jeżeli teraz zostanie wysłana wiadomość do użytkownika test@eproit.pl to automatycznie zostanie utworzony katalog pocztowy w /var/vmail
5) Instalacja DOVECOT
apt-get install dovecot-common dovecot-imapd dovecot-pop3d
dovecot-common – Jest to pakiet przejściowy, który będzie można bezpiecznie usunąć po zakończeniu instalacji.
dovecot-imapd – Dovecot jest serwerem poczty, którego głównym celem jest zapewnienie bezpieczeństwa i niezawodności.Obsługuje mbox/Maildir i własne formaty DBOX/mdbox, a ponadto jest wystarczająco szybki, rozszerzalny i przenośny. Pakiet zawiera serwer IMAP – Dovecot.
dovecot-pop3d – Pakiet zawiera serwer POP3 – Dovecot.
5.1) Obsługa Dovecot LDA przez Postfix
Dovecot LDA (deliver) – lokalny agent dostarczania, który odbiera maila z MTA (Mail Transport Agent) np. od Postfix i dostarcza wiadomość do skrzynki pocztowej użytkownika.
Główne funkcje Dovecot LDA :
– indeksowanie skrzynki pocztowej podczas dostarczania maila, zapewniając później szybszy dostęp do skrzynki pocztowej
– limitowanie miejsca dyskowego (Quota), z którego użytkownik może korzystać (miejsce na skrzynce pocztowej)
– obsługa Sieve (język filtrowania poczty, przekazywanie poczty, autoresponder)
Konfiguracja odbywa się w sekcji protocol lda (plik /etc/dovecot/dovecot.conf lub /etc/dovecot/conf.d/15-lda.conf)
**********************
Konfiguracja protokołu Dovecot LDA
**********************
Ważne parametry do ustawienia :
postmaster_address – jest adresem w polu FROM (adres nagłówkowy w mailach odrzuconych)
hostname – jest używany przy generowaniu ID wiadomości (nagłówek w mailach odrzuconych)
auth_socket_path – określa gniazdo UNIX dla dovecot-auth
Wartości zwracane przez Dovecot :
0 (EX_OK): dostarczenie się powiodło
64 (EX_USAGE): podano nieprawidłowy parametr
67 (EX_NOUSER): nazwa użytkownika nie została odnaleziona
78 (EX_CONFIG): błąd odczytu pliku konfiguracyjnego lub problem z konfiguracją.
75 (EX_TEMPFAIL): tymczasowa awaria. Zwracana wartość przy niepowodzeniu.
Edytujemy sekcję protocol lda (/etc/dovecot/conf.d/15-lda.conf) :
protocol lda { auth_socket_path = /var/run/dovecot/auth-master log_path = /var/log/dovecot-deliver-errors.log info_log_path = /var/log/dovecot-deliver.log mail_plugins = quota sieve postmaster_address = postmaster@eproit.pl quota_full_tempfail = yes rejection_reason = Your message to was automatically rejected:The Subject of your message was: %s }
########################################
Ważne : zapełnienie lub brak dostępu (zapisu, odczytu) do plików logów
spowoduje że poczta nie zostanie dostarczona poprawnie.
########################################
Tworzymy plik dovecot-deliver.log oraz dovecot-deliver-errors.log
touch /var/log/dovecot-deliver.log
touch /var/log/dovecot-deliver-errors.log
Nadajemy uprawnienia :
chmod a+rw /var/log/dovecot-deliver.log
chmod a+rw /var/log/dovecot-deliver-errors.log
Przechodzimy do :
cd /etc/logrotate.d/
Tworzymy plik dovecot o zawartości:
/var/log/dovecot-deliver.log { missingok notifempty delaycompress sharedscripts postrotate kill -s 0 `cat /var/run/dovecot/master.pid` || kill -s USR1 `cat /var/run/dovecot/master.pid` true endscript }
Tworzymy drugi plik dovecot2 o zawartości :
/var/log/dovecot-deliver-errors.log { missingok notifempty delaycompress sharedscripts postrotate kill -s 0 `cat /var/run/dovecot/master.pid` || kill -s USR1 `cat /var/run/dovecot/master.pid` true endscript }
# Więcej na http://wiki2.dovecot.org/Logging
Przykładowy LOG :
Apr 16 16:38:16 lda(testowy2@eproit): Info: sieve: msgid=: stored mail into mailbox 'INBOX'
Edytujemy plik master.cf
Dodajemy nowy proces :
nano /etc/postfix/master.cf
Szukamy wpis procesu :
maildrop unix - n n - - pipe flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
Po tym wpisie wstawiamy nowy proces :
dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient} -e
Ustawiamy transport dla użytkowników wirtualnych (main.cf) :
postconf -e virtual_transport = dovecot postconf -e dovecot_destination_concurrency_limit = 2 postconf -e dovecot_destination_recipient_limit = 1
Restart Postfix :
service postfix restart
5.2 Konfiguracja Dovecot :
***********************
5.2.1 Konfiguracja uwierzytelniania
***********************
Komunikacja Postfix z Dovecot SASL :
Komunikacja pomiędzy serwerem Postfix SMTP i Dovecot SASL odbywać się może poprzez gniazdo
domeny UNIX lub gniazdo TCP.
Ja używam gniazdo domeny UNIX dla zapewnienia lepszej ochrony prywatności.
Gniazdo znajduje się w /var/spool/postfix/private/auth.
Linie : group = postfix, mode = 0660, user = postfix nadają uprawnienia odczytu i zapisu tylko grupie i użytkownikowi Postfix.
Edytujemy plik /etc/dovecot/conf.d/10-master.conf
service auth { unix_listener /var/spool/postfix/private/auth { group = postfix mode = 0660 user = postfix } unix_listener auth-master { mode = 0600 user = vmail } user = root }
Edytujemy plik 10-auth.conf (uwierzytelnianie) :
1) Plaintext Authentication
Dyrektywa disable_plaintext_auth wyłącza logowanie nieszyfrowane w otwartym tekście. Jeżeli chcemy pozwolić logować się wszystkim to ustawiamy na no.
disable_plaintext_auth = no (ustawienia domyślne)
disable_plaintext_auth = no
* Zmień później na yes.
2) Włączenie mechanizmów uwierzytelniających dla serwera Postfix SMTP(auth_mechanisms)
Włącz uwierzytelnianie PLAIN, LOGIN oraz CRAM-MD5.
auth_mechanisms = plain login cram-md5
Mechanizmy zostały opisane na stronie:
http://wiki2.dovecot.org/Authentication/Mechanisms
Edytujemy plik /etc/dovecot/dovecot.conf
Użytkownik i hasło będzie sprawdzane z bazy danych.
dodajemy do pliku :
# Uwierzytelnianie za pomocą bazy danych :
passdb { args = /etc/dovecot/dovecot-sql.conf.ext driver = sql }
# Wyszukaj użytkowników z listy SQL :
userdb { args = /etc/dovecot/dovecot-sql.conf.ext driver = sql }
Uwierzytelnianie używając bazy danych SQL :
Edytujemy plik /etc/dovecot/dovecot-sql.conf.ext
na końcu pliku umieszczamy dane do bazy postfixadmin :
driver = mysql connect = host=127.0.0.1 dbname=postfixadmin user=postfixadmin password=fdjyr default_pass_scheme = MD5-CRYPT password_query = SELECT password FROM mailbox WHERE username = '%u' user_query = SELECT CONCAT('/var/vmail/',maildir) AS home, 7030 AS uid, 7030 AS gid FROM mailbox WHERE username = '%u' AND active = '1'
########
UWAGA : Istnieje możliwość definiowania wielu baz uwierzytelniających
http://wiki2.dovecot.org/Authentication/MultipleDatabases
########
Edytujemy plik /etc/dovecot/conf.d/10-master.conf
1) unix_listener auth-userdb dodajemy do komentarza.
unix_listener auth-userdb { #mode = 0666 #user = #group = }
dodajemy do komentarza :
#unix_listener auth-userdb { #mode = 0666 #user = #group = # }
************
Włączenie uwierzytelniania SASL i autoryzacji na serwerze Postfix SMTP
************
Jeżeli chcemy używać uwierzytelniania Dovecot SASL należy w parametrze smtpd_sasl_type określić wartość dovecot.
Możliwe jest również użycie implementacji cyrus.
Dodatkowo należy określić gdzie serwer Postfix ma szukać serwer uwierzytelniania Dovecot.
Wszystko to zależy od ustawień w pliku conf.d/10-master.conf w sekcji service auth w linii unix_listener.
Jeśli skonfigurowano Dovecot dla komunikacji z gniazdem UNIX, należy w parametrze smtpd_sasl_path podać private/auth.
Natomiast dla komunikacji z gniazdem TCP należy ustawić w następujący sposób rodzaj ścieżki :
/etc/postfix/main.cf:
smtpd_sasl_path = inet:adres_ip:12345
Jeśli określisz zdalny adres IP, informacje będą wysyłane w sposób niezaszyfrowany.
Niezależnie od wybranego sposobu realizacji uwierzytelniania, należy zawsze włączyć opcję : smtpd_sasl_auth_enable = yes
Po przeładowaniu serwera Postfix (postfix reload), klienci SMTP będą widzieć dodatkową możliwość AUTH w sesji SMTP.
Zostaną wypisane mechanizmy uwierzytelniania, które są wspierane przez serwer.
Przykład :
telnet mail.eproit.pl 25
…
220 mail.eproit.pl ESMTP Postfix
EHLO client.eproit.pl
250-mail.eproit.pl
250-PIPELINING
250-SIZE 10240000
250-AUTH DIGEST-MD5 PLAIN CRAM-MD5
…
Aby zapewnić kompatybilność (uwierzytelnianie) ze starszymi klientami pocztowymi, należy uaktywnić opcję broken_sasl_auth_clients = yes.
Opcja dla starszych wersji programu Outlook. Po przeładowaniu Postfix, serwer będzie propagował możliwość
uwierzytelniania dwa razy – raz dla klientów, tzw. „zgodnych” i raz dla klientów starszych wersji programu pocztowego.
Przykład :
telnet mail.eproit.pl 25
…
220 mail.eproit.pl ESMTP Postfix
EHLO client.eproit.pl
250-mail.eproit.pl
250-PIPELINING
250-SIZE 10240000
250-AUTH DIGEST-MD5 PLAIN CRAM-MD5
250-AUTH=DIGEST-MD5 PLAIN CRAM-MD5
Polityka serwera Postfix, właściwości mechanizmów uwierzytelniania :
Postfix wspiera politykę ograniczającą mechanizmy uwierzytelniania za pomocą ich właściwości.
Właściwości i opis opcji :
noanonymous – nie używać mechanizmów, które umożliwiają uwierzytelnianie anonimowe.
noplaintext – nie używać mechanizmów, które przekazują w sposób niezaszyfrowany login i hasło.
nodictionary – nie stosować mechanizmów, które są podatne na ataki słownikowe.
Przykłady konfiguracji:
Niezaszyfrowana sesja SMTP :
Domyślna polityka zezwala na użycie dowolnych mechaniznów uwierzytelniania za wyjątkiem uwierzytelniania anonimowego :
smtpd_sasl_security_options = noanonymous
Zawsze wartość noanonymous powinna być ustawiona. Inaczej Postfix może dać „obcym klientom”zezwolenie na uwierzytelnienie.
Szyfrowana sesja SMTP (TLS) :
Aby uwierzytelnienie oferowało nawiązywanie sesji tylko przy połączeniu szyfrowanym, należy uaktywnić opcję :
smtpd_tls_auth_only = yes
Włączenie autoryzacji SASL w Postfix :
Po uwierzytelnieniu klienta, Postfix decyduje do czego zdalny klient SMTP będzie dopuszczony np.
do wysłania wiadomości do zdalnego odbiorcy. Uprawnienia nie są domyślnie uaktywnione.
Domyślnie klient SMTP może określić dowolny adres nadawcy w polu MAIL FROM.
Używając uwierzytelniania, Postfix wie, kim jest nadawca.
Mając tabelę adresów nadawców, nazw loginów, Postfix może zdecydować czy uwierzytelniony klient może korzystać z określonego
adresu nadawcy w polu MAIL FROM.
/etc/postfix/main.cf:
smtpd_sender_login_maps = hash:/etc/postfix/controlled_envelope_senders
smtpd_recipient_restrictions =
…
reject_sender_login_mismatch
permit_sasl_authenticated
…
W pliku /etc/postfix/controlled_envelope_senders określamy powiązania pomiędzy adresami nadawcy i ich właścicielami.
Z ograniczeniem reject_sender_login_mismatch serwer odrzuci adres nadawcy jeśli smtpd_sender_login_maps nie określa nazwy logowania klienta SMTP jako właściciela tego adresu.
Przykład :
/etc/postfix/controlled_envelope_senders
# adres nadawcy właściciele (SASL nazwy loginów) anna.kowalska@eproit.pl anna.kowalska@eproit.pl kadry@eproit.pl anna.kowalska@eproit.pl, jan.kowalski@eproit.pl postmaster admin@eproit.pl
http://www.postfix.org/SASL_README.html#server_sasl_enable
Edytujemy plik /etc/postfix/main.cf lub wykonujemy (postconf):
#Włączenie uwierzytelniania (SMTP AUTH) postconf -e smtpd_sasl_auth_enable = yes
#Nazwa obszaru uwierzytelniania postconf -e smtpd_sasl_local_domain = $mydomain
#Nie ma możliwości na uwierzytelnianie anonimowe postconf -e smtpd_sasl_security_options = noanonymous
postconf -e broken_sasl_auth_clients = yes # w celu zapewnienia kompatybilności ze starszymi klientami
postconf -e smtpd_sasl_authenticated_header = yes
postconf -e smtpd_sasl_type = dovecot postconf -e smtpd_sasl_path = private/auth # ścieżka do demona odpowiedzialnego za uwierzytelnianie (Dovecot). Ścieżka /etc/dovecot/dovecot.conf, sekcja auth default postconf -e smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated, reject_unauth_destination" # ustawiamy kto może wysyłać wiadomości mail.
Test :
telnet mail.eproit 25
root@mail:/etc/postfix# telnet mail.eproit 25
Trying 192.168.3.131…
Connected to mail.eproit.
Escape character is '^]'.
220 mail.eproit ESMTP Postfix (Debian/GNU)
EHLO eproit
250-mail.eproit
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN CRAM-MD5
250-AUTH=PLAIN LOGIN CRAM-MD5
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
***************************
Ustawienia dla portu 587 i 465 :
***************************
Edycja pliku /etc/postfix/master.cf :
Odkomentowujemy linijki :
# Ustawienia portu SMTP dzałającego na porcie 587 submission inet n - - - - smtpd # Ustawienia dla portu 587 -o smtpd_sasl_auth_enable=yes # włączenie uwierzytelniania SASL -o smtpd_client_restrictions=permit_sasl_authenticated,reject_unauth_destination # restrykcje dot. klientów, osób wysyłających pocztę -o syslog_name=postfix/submission # ustawienia portu SMTP SSL (465) smtps inet n - - - - smtpd # Ustawienia transmisji szyfrowanej SSL -o syslog_name=postfix/smtps # nazwa systemu pocztowego, która będzie wyświetlana w rekordach logów procesu syslog -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes # włączenie uwierzytelniania SASL -o smtpd_client_restrictions=permit_sasl_authenticated,reject_unauth_destination # restrykcje dot. klientów, osób wysyłających pocztę
Test :
telnet mail.eproit 587
openssl s_client -crlf -connect mail.eproit:465
*****************************
5.2.2 Konfiguracja lokalizacji skrzynek pocztowych
*****************************
Edytujemy drugi plik 10-mail.conf (ustawienie lokalizacji poczty) :
mail_location = mbox:~/mail:INBOX=/var/mail/%u
zamieniamy na :
mail_location = maildir:/var/vmail/%d/%n
Dyrektywa mail_location wskazuje katalogi z pocztą.
Rodzaje skrzynek pocztowych zostały opisane w : http://wiki2.dovecot.org/FindMailLocation
Usuwamy znak komentarza # z :
#first_valid_uid = 500
**************************
5.2.3 Konfiguracja protokołów
**************************
Edytujemy plik /etc/dovecot/dovecot.conf :
1)
dodajemy linijkę do komentarza :
#!include_try /usr/share/dovecot/protocols.d/*.protocol
2)
Wstawiamy następnie do pliku dovecot.conf :
protocols = pop3 imap
************************
Konfiguracja protokołu IMAP
************************
Włączenie pluginów Quota.
Limitowanie miejsca dyskowego, z którego użytkownik może korzystać – Quota.
Dwie wtyczki Quota : quota imap_quota
Wtyczka Autocreate – plugin zezwala administratorowi określić skrzynki pocztowe, które muszą zawsze istnieć dla wszystkich użytkowników.Skrzynki pocztowe są tworzone i subskrybowane zawsze po zalogowaniu użytkownika.
Edytujemy plik /etc/dovecot/conf.d/20-imap.conf :
DODAJEMY OBSŁUGĘ PLUGINÓW DLA IMAP :
mail_plugins = autocreate quota imap_quota
KONFIGURACJA NASŁUCHIWANIA – IMAP :
Edytujemy plik /etc/dovecot/conf.d/10-master.conf :
service imap-login { inet_listener imap { address = * port = 143 } inet_listener imaps { address = * port = 993 } }
Pozostawiamy bez zmian :
service imap { # Most of the memory goes to mmap()ing files. You may need to increase this # limit if you have huge mailboxes. #vsz_limit = $default_vsz_limit # Max. number of IMAP processes (connections) #process_limit = 1024 }
***********************
Konfiguracja protokołu POP3
***********************
Edytujemy plik /etc/dovecot/conf.d/20-pop3.conf
DODAJEMY OBSŁUGĘ PLUGINÓW DLA POP3 :
mail_plugins = quota
2) Ustawienie parametru pop3_uidl_format
Wyłączamy z komentarza :
pop3_uidl_format = %08Xu%08Xv
Dyrektywa pop3_uidl_format określa jak nazywane będą pliki z pocztą.
Konfiguracja nasłuchiwania – POP3 :
Edytujemy plik /etc/dovecot/conf.d/10-master.conf :
service pop3-login { inet_listener pop3 { #port = 110 } inet_listener pop3s { #port = 995 #ssl = yes } }
Konfiguracja usługi POP3
Edytujemy plik /etc/dovecot/conf.d/10-master.conf :
Pozostawiamy bez zmian :
service pop3 { # Max. number of POP3 processes (connections) #process_limit = 1024 }
**************************
Konfiguracja protokołu LMTP
**************************
Protokół LMTP służy do doręczania wiadomości pomiędzy systemami pocztowymi w tej samej sieci. Jeśli wiadomość ma zostać doręczona do jakiegoś innego pakietu oprogramowania, który może być uruchomiony w tym samym komputerze lub w innym systemie w sieci lokalnej, menedżer kolejek wywołuje agenta lmtp. LMTP może być użyte w sytuacji, gdy serwer POP/IMAP przechowuje wiadomości w formacie niestandardowym. POP i IMAP to protokoły do odbierania wiadomości. Serwer POP/IMAP ma własny format do zapisywania i przechowywania wiadomości, Postfix używa LMTP do przekazywania wiadomości do serwera POP/IMAP.
Jeśli wystąpi problem z doręczeniem wiadomości, agent lmtp powiadamia menedżera kolejek, że wiadomość powinna zostać oznaczona do doręczenia później i zapisana w kolejce wiadomości doręczonych.
Źródło : Helion – Postfix. Przewodnik encyklopedyczny.
Edytujemy plik /etc/dovecot/conf.d/10-master.conf :
service lmtp { unix_listener lmtp { mode = 0600 user = postfix group = postfix } }
********************
AUTH-WORKER
********************
Edytujemy plik /etc/dovecot/conf.d/10-master.conf :
Pozostawiamy bez zmian :
service auth-worker { # Auth worker process is run as root by default, so that it can access # /etc/shadow. If this isn't necessary, the user should be changed to # $default_internal_user. #user = root }
Edytujemy plik /etc/dovecot/conf.d/10-master.conf :
Pozostawiamy bez zmian :
service dict { # If dict proxy is used, mail processes should have access to its socket. # For example: mode=0660, group=vmail and global mail_access_groups=vmail unix_listener dict { #mode = 0600 #user = #group = } }
*************************
5.2.4 Konfiguracja pluginów
*************************
link do materiałów : http://wiki2.dovecot.org/Quota/Configuration
Edytujemy plik /etc/dovecot/conf.d/90-plugin.conf :
plugin { #skrzynki pocztowe określone przez administratora, która zawsze istnieją #po zalogowaniu się użytkownika autocreate = Spam autosubscribe = Spam autocreate2 = Trash autosubscribe2 = Trash # autocreate3 = ..etc.. # autosubscribe3 = ..etc.. # konfigurowanie limitów pojemności skrzynki pocztowej (rodzaj quota) # Konfiguracja korzenia Quota zawiera : nazwę backend, nazwę główną i parametry jeśli istnieją. quota = maildir:User quota # Konfiguracja reguł quota, rzeczywistych limitów # Składnia : # quota_rule = : # quota_rule2 = ... # quota_rule3 = ..etc.. # * jako nazwa skrzynki pocztowej, konfiguruje domyślny limit dla # wszystkich katalogów pocztowych # limit skrzynki pocztowej (jednej)10 MB. Dla zabawy dałem 10 MB ;) quota_rule = *:storage=10M # limit skrzynki pocztowej (jednej)10 MB i limit na 30 wiadomości na jedną skrzynkę # quota_rule = *:storage=10M:messages=30 # Inne reguły # quota_rule = *:storage=1G # quota_rule2 = Trash:storage=+100M # quota_rule3 = SPAM:ignore }
******!!!!!*******
Edytujemy plik /etc/dovecot/conf.d/10-auth.conf :
1)
disable_plaintext_auth = no
zamieniamy na :
disable_plaintext_auth = yes
2)
!include auth-sql.conf.ext
zamieniamy na # :
#!include auth-sql.conf.ext
# Wyłączam ten plik z konfiguracji ponieważ konfiguracja została przeprowadzona w pliku /etc/dovecot/dovecot.conf
3)
!include auth-system.conf.ext
zamieniamy na # :
#!include auth-system.conf.ext
# Nie korzystałem z autoryzacji użytkowników systemowych
***********
TLS
***********
7 Konfiguracja TLS
Nawiązywanie szyfrowanego i autoryzowanego połączenia za pomocą protokołu TLS z drugim serwerem SMTP, lub z klientem pocztowym.
TLS umożliwia bezpieczną wymianę informacji.
Edytujemy plik /etc/postfix/main.cf :
Definiujemy ściężkę do pliku z kluczem prywatnym i certyfikatami serwera oraz CA :
przykład :
smtpd_tls_cert_file = /etc/ssl/CA/mail.eproit.pl.pem smtpd_tls_key_file = /etc/ssl/CA/privkey.eproit.pl.pem smtpd_tls_CAfile = /etc/ssl/CA/cacert.eproit.pl.pem
Ustawiamy :
smtpd_use_tls=yes
# włączenie szyfrowania
smtpd_tls_security_level = may # smtpd_tls_security_level = encrypt smtpd_tls_wrappermode = no # wyłączamy tryb "wrapper" smtpd_tls_auth_only = yes #wymuszamy szyfrowane uwierzytelnianie smtpd_tls_received_header = yes
*****************************
8. Konfiguracja szyfrowania – DOVECOT
*****************************
/etc/dovecot/conf.d/10-ssl.conf
Ustawiamy :
ssl = yes
Dyrektywa ssl włącza (yes) lub wyłącza szyfrowanie (no).
Podajemy ścieżki do klucza prywatnego i certyfikatu SSL :
ssl_cert =
250 ok
rcpt to:
250 ok
data
From: Testowy
To: Xmail
Subject: test
testowy mail
.
250 2.0.0 Ok: queued as A09B011FB41
quit
221 2.0.0 Bye
TEST : port 465
openssl s_client -crlf -connect mail.eproit.pl:465
Edytujemy plik /etc/postfix/master.cf :
Konfigurujemy submission na porcie 587 :
Odkomentowujemy linijki wymuszające uwierzytelnianie :
submission inet n - - - - smtpd -o syslog_name=postfix/submission -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject_unauth_destination
Test :
telnet mail.eproit 587
*****************
TESTY: POP3, POP3 SSL, IMAP, IMAP SSL
****************
Test POP3 :
telnet mail.eproit.pl pop3
Trying 192.168.3.131... Connected to mail.eproit. Escape character is '^]'. +OK Dovecot ready. USER testowy@eproit +OK PASS has54w$ +OK Logged in. LIST +OK 1 messages: 1 1345 . RETR 1 +OK 1345 octets .... .... ....
Test POP3 SSL :
openssl s_client -connect mail.eproit.pl:995
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-GCM-SHA384 Server public key is 2048 bit Secure Renegotiation IS supported Compression: zlib compression Expansion: zlib compression SSL-Session: Protocol : TLSv1.2 Cipher : DHE-RSA-AES256-GCM-SHA384 Session-ID: FC317BABD1BF2436DC3A28B651A4A5A0B068874CB199EBDA946269738D69C895 Session-ID-ctx: Master-Key: C3108205A00C5E5DB23709D2C12554514D861D0A0BCA0BDE44A481FAE2D4E8AE1B85316F40129DB736E597B1DFFC56D5 Key-Arg : None PSK identity: None PSK identity hint: None SRP username: None TLS session ticket lifetime hint: 300 (seconds) TLS session ticket: 0000 - 52 c3 10 4d 85 18 5e cb-78 b1 03 25 93 c5 96 78 R..M..^.x..%...x 0010 - d4 62 2e 56 8b ac c5 54-10 b7 19 9c 4a f7 58 f7 .b.V...T....J.X. 0020 - c5 75 d0 dc f4 bf 3b 74-bd 32 66 1b 11 9b e4 a0 .u....;t.2f..... 0030 - 98 5d 46 64 1d 51 ed b7-1f 82 01 bd a3 47 29 30 .]Fd.Q.......G)0 0040 - b0 57 86 5c 44 c7 2d ba-44 6c a4 c6 db 42 05 05 .W.\D.-.Dl...B.. 0050 - 7c 38 cc d0 7a 17 8d bd-bc f6 71 1f d0 f5 d6 51 |8..z.....q....Q 0060 - 64 89 67 a8 59 13 10 f1-2f 8a 98 ed 16 32 af 6b d.g.Y.../....2.k 0070 - 0a f3 9e b9 ff c3 dd 51-32 b6 1e 52 ad 67 d8 f9 .......Q2..R.g.. 0080 - 2e c6 be 48 c5 8e 15 78-ca b5 3f 18 07 08 7b 37 ...H...x..?...{7 0090 - 07 26 80 2e b3 35 1e c2-0f b3 40 16 4c 0b 25 ef .&...5....@.L.%. Compression: 1 (zlib compression) Start Time: 1429282846 Timeout : 300 (sec) Verify return code: 21 (unable to verify the first certificate) --- +OK Dovecot ready. USER testowy@eproit +OK PASS has54w$ +OK Logged in. LIST +OK 1 messages: 1 1345 .
TEST IMAP :
telnet mail.eproit.pl imap
telnet mail.eproit.pl imap Trying 192.168.3.131... Connected to mail.eproit. Escape character is '^]'. * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE STARTTLS AUTH=PLAIN AUTH=LOGIN AUTH=CRAM-MD5] Dovecot ready. a1 LOGIN testowy@eproit has54w$ a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS SPECIAL-USE QUOTA] Logged in a2 LIST "" "*" * LIST (\HasNoChildren \Drafts) "." "Drafts" * LIST (\HasNoChildren \Trash) "." "Trash" * LIST (\HasNoChildren \Junk) "." "Junk" * LIST (\HasNoChildren \Sent) "." "Sent" * LIST (\HasNoChildren) "." "INBOX" a2 OK List completed.
TEST IMAP SSL :
openssl s_client -connect mail.eproit.pl:993
SSL handshake has read 1855 bytes and written 507 bytes --- New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-GCM-SHA384 Server public key is 2048 bit Secure Renegotiation IS supported Compression: zlib compression Expansion: zlib compression SSL-Session: Protocol : TLSv1.2 Cipher : DHE-RSA-AES256-GCM-SHA384 Session-ID: 3AA4D243CC5E3324517C4FABB1825A2482FBA7ED436C96EDA0CCF88730467161 Session-ID-ctx: Master-Key: F90292DE7CC66C8A8F500F2FA8D5B62108956E8E5F6088F1773982DDAB9929CD581BF2D147419D38805324AC70C26168 Key-Arg : None PSK identity: None PSK identity hint: None SRP username: None TLS session ticket lifetime hint: 300 (seconds) TLS session ticket: 0000 - 5d ca 7c f9 08 4d 6e a3-54 a6 37 c3 c5 94 22 45 ].|..Mn.T.7..."E 0010 - a8 a5 af 8c 42 c2 61 48-b1 22 b0 7e 33 b0 c2 24 ....B.aH.".~3..$ 0020 - a1 1d 68 dc b5 64 bc 77-a6 9f 1c 01 ce 92 b5 ff ..h..d.w........ 0030 - 1b c4 4c fa 2b 52 42 e5-fb cf f8 77 5f 4f 45 8d ..L.+RB....w_OE. 0040 - 54 85 a8 a5 d0 26 9e 74-87 c1 fd 18 24 f4 c2 56 T....&.t....$..V 0050 - c3 09 76 c5 5e ee df ed-3b 95 7f 13 b4 6c 2c 16 ..v.^...;....l,. 0060 - 17 56 e5 9a f9 df 35 94-49 17 87 19 45 ef 9a 9a .V....5.I...E... 0070 - 21 7a 0d c4 86 26 d6 fc-28 a2 8b 13 3f 03 51 6d !z...&..(...?.Qm 0080 - 6c 52 c2 71 8d bc 9a 41-1a 27 03 b8 b3 cc f4 10 lR.q...A.'...... 0090 - 39 a3 4a 13 bb 18 07 1f-2b 14 d2 fb 3d b1 89 1c 9.J.....+...=... Compression: 1 (zlib compression) Start Time: 1429267591 Timeout : 300 (sec) Verify return code: 21 (unable to verify the first certificate) --- * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN AUTH=LOGIN AUTH=CRAM-MD5] Dovecot ready. a1 LOGIN testowy@eproit has54w$ a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY T HREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18N LEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS SPECIAL-USE QUOTA] Logged in a2 LIST "" "*" * LIST (\HasNoChildren \Drafts) "." "Drafts" * LIST (\HasNoChildren \Trash) "." "Trash" * LIST (\HasNoChildren \Junk) "." "Junk" * LIST (\HasNoChildren \Sent) "." "Sent" * LIST (\HasNoChildren) "." "INBOX" a2 OK List completed.
*****************
RoundCube
*****************
10) Instalacja RoundCube
Ściągamy paczkę :
wget http://switch.dl.sourceforge.net/project/roundcubemail/roundcubemail/1.1.1/roundcubemail-1.1.1-complete.tar.gz
Rozpakowujemy :
tar -zxf roundcubemail-1.1.1-complete.tar.gz
Przechodzimy do rozpakowanego katalogu i czytamy plik INSTALL 🙂
10.1 Instalacja potrzebnych pakietów
10.1.1 Instalacja wybranego serwera www ( The Apache, Lighttpd, Cherokee or Hiawatha web server)
apt-get install apache2
10.1.2 Instalacja PHP
# Instalacja driverów dla MySQL, PostgreSQL lub SQLite
# Instalacja paczek PEAR (Dołączone z Roundcube lub zewnętrzne)
– Mail_Mime 1.8.1 or newer
– Mail_mimeDecode 1.5.5 or newer
– Net_SMTP (latest from https://github.com/pear/Net_SMTP/)
– Net_IDNA2 0.1.1 or newer
– Auth_SASL 1.0.6 or newer
– Net_Sieve 1.3.2 or newer (for managesieve plugin)
– Crypt_GPG 1.2.0 or newer (for enigma plugin)
# dla MySQL
apt-get install php5 php-pear php5-mysql apt-get install php5-mcrypt php5-intl service apache2 restart
10.1.3 Instalacja Libiconv, Zip (rekomendowane)
10.1.4 Instalacja Fileinfo, Mcrypt, mbstring (opcjonalnie)
Instalacja Roundcube :
Rozpakowany katalog roundcubemail-1.0.4 należy przenieść do katalogu serwera WWW
cp -r /home/roundcubemail-1.1.1 /var/www
Można zmienić nazwę katalogu :
cd /var/www
mv roundcubemail-1.1.1 roundcubemail
Utwórz katalogi :
/temp
/logs
mkdir /var/www/roundcubemail/temp logs
Nadaj prawo zapisu do katalogów temp logs przez web serwer.
chmod -R 722 logs temp Utwórz nową bazę danych i użytkownika dla Roundcube : logujemy się do mysql : mysql -u root -p
wykonujemy w konsoli mysql :
CREATE DATABASE roundcubemail; CREATE USER 'roundcube'@'localhost' IDENTIFIED BY 'asfas'; GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, INDEX, ALTER, DROP ON `roundcubemail`.* TO 'roundcube'@'localhost'; FLUSH PRIVILEGES; QUIT
Kopiujemy plik konfiguracyjny :
cp /var/www/roundcubemail/config/config.inc.php.sample /var/www/roundcubemail/config/config.inc.php
Edytujemy plik /var/www/roundcubemail/config/config.inc.php :
Konfigurujemy dostęp do bazy danych :
$config['db_dsnw'] = 'mysql://roundcube:asfas@localhost/roundcubemail';
#Włączamy tryb instalacyjny. Dodajemy parametr :
$config['enable_installer'] = true;
Przechodzimy do pliku : /etc/php5/apache2/php.ini :
Ustawiamy :
date.timezone = Europe/Warsaw
instalujemy php5-ldap
service apache2 restart
Otwieramy przeglądarkę internetową i wpisujemy adres :
http://ADRES_IP_SERWERA/installer/
a) sprawdzamy środowisko. Jeżeli jest OK klikamy NEXT
b) Create config. Przeprowadzamy konfigurację pliku. Aktualizujemy konfigurację (UPDATE CONFIG). Postępujemy wg. instrukcji na ekranie.
c) Testujemy konfigurację (Test config)
Klikamy na initialize database aby utworzyć tabele bazy danych.
Ustawiamy porty dla SMTP : 465
IMAP : 993
nano /var/www/config/config.inc.php
przykład zawartości pliku:
$config['db_dsnw'] = 'mysql://roundcube:asfas@localhost/roundcubemail'; $config['default_host'] = 'ssl://localhost'; $config['default_port'] = 993; $config['smtp_server'] = 'ssl://localhost'; $config['smtp_port'] = 465; $config['smtp_user'] = '%u'; $config['smtp_pass'] = '%p'; $config['support_url'] = ''; $config['des_key'] = 'aQr_AYCiKEtREwvkaekGRr%='; $config['plugins'] = array('archive', 'zipdownload'); $config['enable_installer'] = true;
nalezy w pliku defaults.inc.php : zmienić z :
$config['smtp_auth_type'] = '';
na
$config['smtp_auth_type'] = 'PLAIN';
$config['imap_auth_type'] = '';
ja zmieniłem na :
$config['imap_auth_type'] = 'PLAIN';
Po zakończeniu instalacji i konfiguracji należy usunąć katalog instalacyjny :
rm -r /var/www/roundcubemail/installer
11) Konfiguracja Apache, MySQL, PHPMYADMIN
11.1 Import certyfikatu dla Apache
cd /etc/ssl/CA
cp apache_mail.eproit.pl.pem /etc/apache2
Zabezpieczenie :
chmod 600 /etc/apache2/apache_mail.eproit.pl.pem
11.2 Włączamy moduł SSL i rewrite
a2enmod ssl
a2enmod rewrite
service apache2 restart
11.3 Główna strona jako roundcubemail
Edycja pliku default
ServerAdmin webmaster@eproit.pl
ServerName mail.eproit.pl
DocumentRoot /var/www/roundcubemail/
Options FollowSymLinks
AllowOverride None
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
Edytujemy DocumentRoot.
11.4 Tworzymy kopię pliku konfiguracyjnego domyślnej witryny w celu zmodyfikowania jej do użycia przez stronę po SSL
cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl
edycja pliku konfiguracyjnego :
nano /etc/apache2/sites-available/default
Zmieniamy linijkę podając własny adres pocztowy :
ServerAdmin webmaster@eproit.pl
dodajemy :
ServerName mail.eproit.pl DocumentRoot /var/www
Zapisujemy zmiany.
edycja pliku konfiguracyjnego :
nano /etc/apache2/sites-available/ssl
Zmieniamy lub dodajemy następujące linie :
VirtualHost *:443 ServerAdmin webmaster@eproit.pl ServerName mail.eproit.pl SSLEngine on SSLCertificateFile /etc/apache2/apache_mail.eproit.pl.pem DocumentRoot /var/www/roundcubemail/
Zapisujemy zmiany.
11.5 Włączamy nową witrynę
a2ensite ssl
service apache2 reload
(opcjonalnie) aby klienci łączyli się bezpośrednio po SSL należy dodać do pliku:
/etc/apache2/sites-available/default
po :
VirtualHost *:80
następujące linie:
RewriteEngine on RewriteCond %{SERVER_PORT} ^80$ RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R] RewriteLog "/var/log/apache2/rewrite.log" RewriteLogLevel 2
service apache2 reload
************
CLAMAV
************
12) Konfiguracja Antywirusa i Antyspamu
apt-get install amavisd-new clamav-daemon spamassassin
Amavisd-new – interfejs między serwerem (MTA – Postfix) a filtrem spamu i skanerem antywirusowym
Clamav – skaner antywirusowy
SpamAssassin – filtr antyspamowy
12.1 Instalacja programów do rozpakowywania plików
apt-get install rar apt-get install lha apt-get install arj apt-get install lzma apt-get install arc apt-get install zoo apt-get install ripole apt-get install cabextract apt-get install tnef apt-get install lzop apt-get install pax
12.2 Dodanie użytkownika clamav do grupy amavis
adduser clamav amavis
12.3 Dodanie użytkownika amavis do grupy clamav
adduser amavis clamav
lub wykonaj : usermod -g clamav -G amavis clamav
Restart usługi clamav-daemon :
/etc/init.d/clamav-daemon restart
Kiedy pojawi się komunikat :
[FAIL] Clamav signatures not found in /var/lib/clamav … failed!
[FAIL] Please retrieve them using freshclam … failed!
[FAIL] Then run ‚/etc/init.d/clamav-daemon start’ … failed!
należy wykonać aktualizację sygnatur (bazy wirusów) clamav :
freshclam
Pliki bazy danych wirusów zapisywane są w :
/var/lib/clamav/daily.cvd
/var/lib/clamav/main.cvd
Aby sprawdzić wersję bazy wirusów, sprawdź w logach :
/var/log/clamav/freshclam.log
Przykładowy log :
Thu Apr 16 18:41:44 2015 -> Update process terminated
Thu Apr 16 18:41:48 2015 -> --------------------------------------
Thu Apr 16 18:41:48 2015 -> freshclam daemon 0.98.6 (OS: linux-gnu, ARCH: i386, CPU: i486)
Thu Apr 16 18:41:48 2015 -> ClamAV update process started at Thu Apr 16 18:41:48 2015
Thu Apr 16 18:41:48 2015 -> main.cvd is up to date (version: 55, sigs: 2424225, f-level: 60, builder: neo)
Pamiętaj że zawsze po zmianie konfiguracji clamav należy wykonać restart usługi :
/etc/init.d/clamav-daemon restart
*****************************
Konfigurujemy skanowanie załączników - clamav :
*****************************
nano /etc/amavis/conf.d/20-debian_defaults
Na koniec wykonujemy :
/etc/init.d/clamav-daemon restart
/etc/init.d/clamav-freshclam restart
/etc/init.d/amavis restart
Aby ustawić aktualizacje bazy wirusów wykonaj :
dpkg-reconfigure clamav-freshclam
Po zakończeniu konfiguracji sprawdź logi :
/var/log/clamav
Częste błędy :
- Nie można utworzyć katalogu tymczasowego
Thu Apr 16 16:10:40 2015 -> Received signal: wake up
Thu Apr 16 16:10:40 2015 -> ERROR: Can't create temporary directory /var/lib/clamav/clamav-c284e0301167f24025f83046a611ad73.tmp
Thu Apr 16 16:10:40 2015 -> Hint: The database directory must be writable for UID 110 or GID 114
Naprawa :
Nadaj odpowiednie uprawnienia :
chown 110:114 /var/lib/clamav & chmod 755 /var/lib/clamav
- Błąd przy ściąganiu bazy wirusów. Brak połączenia z serwerem
Należy sprawdzić czy np. firewall nie blokuje połączenia (port 80)
***********
WARTO WIEDZIEĆ
***********
Mając zainstalowango Clamava można przeskanować również cały system na którym działa serwer pocztowy :
Wykonaj w konsoli :
clamscan --recursive=yes --infected /home # Aby przeskanować np. katalog /home
Przykładowy wynik skanowania :
/home/eicar.com.txt: Eicar-Test-Signature FOUND
----------- SCAN SUMMARY -----------
Known viruses: 3789765
Engine version: 0.98.6
Scanned directories: 403
Scanned files: 2425
Infected files: 1
Data scanned: 53.79 MB
Data read: 20.05 MB (ratio 2.68:1)
Time: 106.681 sec (1 m 46 s)
Jeżeli chcesz usunąć zainfekowany plik, dodaj opcję : --remove lub możesz użyć opcję --move=/dir, aby przenieść plik do kwarantanny.
np. clamscan --remove --recursive=yes --infected /home
Aby wykluczyć katalogi ze skanowania użyj : --exclude-dir
np. clamscan --recursive=yes --infected --exclude-dir='^/sys|^/proc|^/dev|^/lib|^/bin|^/sbin' /
Dodanie opcji -l /path/to/file spowoduje zapisanie logu znalezionych wirusów
np.
clamscan -l /var/log/znalezione_wirusy --recursive=yes --infected /home
Sprawdzenie pliku pod względem wirusów :
np.
wget -O- http://www.eicar.org/download/eicar.com.txt | clamscan -
*****************
Konfiguracja AMAVIS
*****************
13 Konfiguracja AMAVIS
nano /etc/amavis/conf.d/15-content_filter_mode
Usuwamy znaki komentarza – # z następujących linii
@bypass_virus_checks_maps = ( \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re); @bypass_spam_checks_maps = ( \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
Restartujemy usługę Amavis :
/etc/init.d/amavis restart
Konfigurujemy parametry w /etc/amavis/conf.d/05-node_id :
nano /etc/amavis/conf.d/05-node_id
$myhostname = "mail.eproit.pl"
Konfiguracja Postfix :
/etc/postfix/main.cf
Dodajemy na końcu lub wykonujemy postconf :
#Amavis
postconf -e content_filter = smtp-amavis:[127.0.0.1]:10024
Edytujemy plik /etc/postfix/master.cf :
/etc/postfix/master.cf
Na końcu wklejamy :
smtp-amavis unix - - n - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes -o max_use=20 127.0.0.1:10025 inet n - n - - smtpd -o content_filter= -o smtpd_tls_security_level=none -o smtpd_delay_reject=no -o smtpd_client_restrictions=permit_mynetworks,reject -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_data_restrictions=reject_unauth_pipelining -o smtpd_end_of_data_restrictions= -o smtpd_restriction_classes= -o mynetworks=127.0.0.0/8 -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o smtpd_client_connection_count_limit=0 -o smtpd_client_connection_rate_limit=0 -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters -o local_header_rewrite_clients=
Jeżeli w /etc/postfix/main.cf ustawiono smtpd_tls_security_level = encrypt to należy dodać jeszcze do master.cf :
-o smtpd_tls_security_level=none -o content_filter= -o receive_override_options=no_header_body_checks
Restartujemy Postfix :
/etc/init.d/postfix reload
*******************
TESTOWANIE WYKRYWANIA WIRUSÓW - POCZTA
*******************
Aby przetestować działania antywirusa zaintaluj :
apt-get install clamav-testfiles
lub wyślij testowego wirusa eicar na skrzynkę pocztową :
wget https://secure.eicar.org/eicar.com.txt
Wirus :
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
Sprawdź logi /var/log/mail.log :
Apr 16 18:27:23 localhost postfix/cleanup[6186]: 1BA62120DE6: message-id=
Apr 16 18:27:23 localhost postfix/qmgr[5240]: 1BA62120DE6: from=, size=2640, nrcpt=1 (queue active)
Apr 16 18:27:23 localhost amavis[5958]: (05958-01) Blocked INFECTED (Eicar-Test-Signature) {DiscardedInternal,Quarantined}, LOCAL [::1]:34329 [::1] -> , quarantine: i/virus-inwGQow2irog, Queue-ID: 29529120D93, Message-ID: <47c9d0ff52827698a620a6ad4684c602@eproit>, mail_id: inwGQow2irog, Hits: -, size: 1162, 2065 ms
Apr 16 18:27:23 localhost postfix/smtp[6187]: 29529120D93: to=, relay=127.0.0.1[127.0.0.1]:10024, delay=2.3, delays=0.11/0.05/0.08/2, dsn=2.7.0, status=sent (250 2.7.0 Ok, discarded, id=05958-01 - INFECTED: Eicar-Test-Signature)
Apr 16 18:27:23 localhost postfix/qmgr[5240]: 29529120D93: removed
Widzimy w logach że wiadomość zawiera wirusa Eicar-Test-Signature. Nie została dostarczona do odbiorcy. Została zablokowana.
**************
14. Instalacja oraz konfiguracja SPAMASSASSIN - sluzy do oznaczania wiadomości jako SPAM
**************
Instalacja :
apt-get install spamassassin
8.5 Konfiguracja SPAMASSASSIN
nano /etc/default/spamassassin
Zmień wartośĆ NA 1 (Zezwól na wystartowanie spamd):
ENABLED=1
Jeżeli tego nie zrobimy to nie uruchomimy Spamassassin.
BŁĄD :
SpamAssassin Mail Filter Daemon: disabled, see /etc/default/spamassassin
Aby włączyć automatyczne aktualizacje reguł :
CRON=1
Następnie wykonaj :
/etc/init.d/spamassassin start
plik konfiguracyjny :
/etc/spamassassin/local.cf
* rewrite_header Subject *****SPAM***** # w jaki sposób w temacie będzie zaznaczana wiadomość oznaczona jako spam
* report_safe 1 # włączenie raportowania
trusted_networks 212.17.35. # ustaw sieci, lub hosty, które uznawane są za bezpieczne. Nie są spamerami.
lock_method flock # ustaw metodę blokowania plików. flock nie jest bezpieczny ale szybszy.
* required_score 5.0 # ustawienie progu, przy którym wiadomość jest uznawana jako SPAM (domyślnie 5.0)
* use_bayes 1 # włączenie używania klasyfikacji Bayesa. (domyślnie włączone)
* bayes_auto_learn 1 # automatyczne uczenie się filtra Bayes-a (domyślnie włączone)
# zestaw nagłówków, które mogą zapewnić nieodpowiednie klasyfikacje Bayesa
bayes_ignore_header X-Bogosity
bayes_ignore_header X-Spam-Flag
bayes_ignore_header X-Spam-Status
#
shortcircuit USER_IN_WHITELIST on
shortcircuit USER_IN_DEF_WHITELIST on
shortcircuit USER_IN_ALL_SPAM_TO on
shortcircuit SUBJECT_IN_WHITELIST on
Po zmianach restart usługi :
service spamassassin restart
Konfiguracja Postfix (master.cf) :
Dodajemy na końcu :
spamassassin unix - n n - - pipe
user=debian-spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
Modyfikujemy linijkę:
smtp inet n - n - - smtpd
zamieniamy na :
smtp inet n - - - - smtpd -o content_filter=spamassassin
oraz modyfikujemy linijkę : submission inet n - - - - smtpd
zamieniamy na :
submission inet n - - - - smtpd -o content_filter=spamassassin
Wykonujemy :
/etc/init.d/postfix reload
**************
Testowanie systemu spamowego
**************
Wysyłka testowego maila o zawartosci :
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
Analiza logów /var/log/mail.log :
Przykład 1 :
Apr 15 17:41:58 localhost postfix/cleanup[4071]: D234C120DCC: message-id=
Apr 15 17:41:59 localhost postfix/qmgr[3978]: D234C120DCC: from=<>, size=3637, nrcpt=1 (queue active)
Apr 15 17:41:59 localhost amavis[2258]: (02258-01) Blocked SPAM {BouncedOutbound,Quarantined}, LOCAL [::1]:39175 [::1] -> , quarantine: v/spam-vwTeItUwlUxh.gz, Queue-ID: DF3D0120CD0, Message-ID: , mail_id: vwTeItUwlUxh, Hits: 999.001, size: 758, 15549 ms
Apr 15 17:41:59 localhost postfix/smtp[4073]: DF3D0120CD0: to=, relay=127.0.0.1[127.0.0.1]:10024, delay=22, delays=0.28/0.22/9/12, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=02258-01, BOUNCE)
Apr 15 17:41:59 localhost postfix/qmgr[3978]: DF3D0120CD0: removed
Apr 15 17:42:00 localhost postfix/pipe[4086]: D234C120DCC: to=, relay=dovecot, delay=1.6, delays=0.17/0.09/0/1.4, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 15 17:42:00 localhost postfix/qmgr[3978]: D234C120DCC: removed
Apr 15 17:42:41 localhost dovecot: imap-login: Login: user=, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, mpid=4089, TLS, session=
Apr 15 17:42:41 localhost dovecot: imap(testowy2@eproit): Disconnected: Logged out in=318 out=1999
Jak widzimy SPAM został zablokowany. Wiadomość SPAM nie została dostarczona do adresata.
Tak się stanie jeśli parametr $final_spam_destiny zostanie ustawiony na D_BOUNCE :
/etc/amavis/conf.d/20-debian_defaults
$final_spam_destiny = D_BOUNCE;
D_BOUNCE - lokalnie zostanie odbita wiadomość SPAM przez amavisd-new. Wiadomość SPAM nie zostanie dostarczona do adresata.
Przykład 2 :
Apr 16 17:23:28 localhost postfix/cleanup[5677]: F3958120DF6: message-id=
Apr 16 17:23:28 localhost postfix/qmgr[5240]: F3958120DF6: from=, size=1468, nrcpt=1 (queue active)
Apr 16 17:23:28 localhost postfix/smtpd[5690]: disconnect from localhost[127.0.0.1]
Apr 16 17:23:28 localhost amavis[2267]: (02267-04) Passed SPAM {RelayedTaggedInternal,Quarantined}, LOCAL [::1]:34029 [::1] -> , quarantine: T/spam-TMioI2qZCXtw.gz, Queue-ID: 22E49120DF2, Message-ID: , mail_id: TMioI2qZCXtw, Hits: 999, size: 758, queued_as: F3958120DF6, 4789 ms
Apr 16 17:23:28 localhost postfix/smtp[5679]: 22E49120DF2: to=, relay=127.0.0.1[127.0.0.1]:10024, delay=5.1, delays=0.15/0.1/0.03/4.8, dsn=2.0.0, status=sent (250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as F3958120DF6)
Apr 16 17:23:28 localhost postfix/qmgr[5240]: 22E49120DF2: removed
Apr 16 17:23:29 localhost postfix/pipe[5691]: F3958120DF6: to=, relay=dovecot, delay=1.6, delays=0.09/0.09/0/1.5, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 16 17:23:29 localhost postfix/qmgr[5240]: F3958120DF6: removed
Apr 16 17:24:26 localhost dovecot: imap-login: Login: user=, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, mpid=5694, TLS, session=<5OAeD9kT6AB/AAAB>
Apr 16 17:24:26 localhost dovecot: imap(testowy2@eproit): Disconnected: Logged out in=119 out=893
W logach widzimy że SPAM został oznaczony jako SPAM. Wiadomość SPAM została dostarczona do adresata.
Tak się stanie jeśli parametr $final_spam_destiny zostanie ustawiony na D_PASS :
/etc/amavis/conf.d/20-debian_defaults
$final_spam_destiny = D_PASS;
D_PASS - dostarcza wiadomość
Jeżeli w logach widzimy że wiadomość SPAM została oznaczona jako SPAM ale użytkownik nie widzi jej w swoich katalogach, należy sprawdzić parametr @local_domains_acl:
nano /etc/amavis/conf.d/05-domain_id
parametr :
#@local_domains_acl = ( ".$mydomain" );
zamień na
@local_domains_acl = ('.');
Przykład 3
Log przesłanej wiadomości, która nie jest SPAMEM :
Apr 16 18:08:52 localhost postfix/cleanup[6054]: 1146C120DF9: message-id=
Apr 16 18:08:52 localhost postfix/qmgr[5240]: 1146C120DF9: from=, size=1309, nrcpt=1 (queue active)
Apr 16 18:08:52 localhost amavis[5959]: (05959-01) Passed CLEAN {RelayedInternal}, LOCAL [::1]:34250 [::1] -> , Queue-ID: 8E690120DEF, Message-ID: , mail_id: YUnmdBYv35xP, Hits: -1, size: 721, queued_as: 1146C120DF9, 3630 ms
Apr 16 18:08:52 localhost postfix/smtp[6055]: 8E690120DEF: to=, relay=127.0.0.1[127.0.0.1]:10024, delay=4, delays=0.2/0.07/0.2/3.5, dsn=2.0.0, status=sent (250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as 1146C120DF9)
******************************
WIADOMOŚCI SPAM W KATALOGU SPAM
*******************************
Aby SPAM trafiał do skrzynki "Spam" zainstaluj dovecot-sieve dovecot-managesieved :
apt-get install dovecot-sieve dovecot-managesieved
W katalogu /var/lib/dovecot tworzymy plik default.sieve
o zawartości :
require "fileinto";
if header :contains "X-Spam-Flag" "YES" {
fileinto "Spam";
}
Utworzony skrypt "budujemy" :
sievec /var/lib/dovecot/default.sieve
Nadajemy użytkownika :
chown -R vmail:vmail /var/lib/dovecot
Konfigurujemy protokół LDA :
Ustawienia mogą się znajdować w :
/etc/dovecot/dovecot.conf
lub w osobnym pliku :
/etc/dovecot/conf.d/15-lda.conf
lda_mailbox_autosubscribe = yes
lda_mailbox_autocreate = yes
# Skrzynka SPAM zostanie automatycznie utworzona jeśli taka wiadomość SPAM się pojawi.
Sprawdzamy ustawienia protokołu LDA :
/etc/dovecot/conf.d/15-lda.conf
protocol lda {
auth_socket_path = /var/run/dovecot/auth-master
log_path = /var/log/dovecot-deliver-errors.log
info_log_path = /var/log/dovecot-deliver.log
mail_plugins = quota sieve
postmaster_address = postmaster@eproit.pl
quota_full_tempfail = yes
rejection_reason = Your message was automatically rejected:%n%r%n%nThe Subject of your message was: %s
}
Dodajemy obsługę protokołu sieve :
/etc/dovecot/dovecot.conf
protocols = pop3 imap sieve
Dodajemy plugin :
/etc/dovecot/conf.d/90-plugin.conf
plugin {
sieve_global_path = /var/lib/dovecot/default.sieve
sieve_global_dir = /var/lib/dovecot/
#...
#...
}
Restartujemy usługę :
/etc/init.d/dovecot restart
Aby sprawdzić czy SPAM jest przekazywany (dostarczany) do katalogu SPAM, przeglądamy logi /var/log/dovecot-deliver.log :
Przykład :
Apr 16 17:23:29 lda(testowy@eproit): Info: sieve: msgid=: stored mail into mailbox 'Junk'
Apr 16 17:33:11 lda(testowy@eproit): Info: sieve: msgid=<62c5efa4e1daa9a61c664133ca141a21@eproit>: stored mail into mailbox 'Junk'
Apr 16 17:37:03 lda(testowy2@eproit): Info: sieve: msgid=: stored mail into mailbox 'INBOX'
Warto również sprawdzić czy pojawiają się jakieś błędy w przekazywaniu :
/var/log/dovecot-deliver-errors.log
15. Instalacja Autorespondera
Autoresponder (skrypt vacation.pl) - Postfixadmin
Po zainstalowaniu Postfixadmin przechodzimy do :
cd /usr/share/doc/postfixadmin/examples/VIRTUAL_VACATION
Rozpakowujemy skrypt vacation.pl.gz
Tworzymy użytkownika vacation :
groupadd --gid 10002 vacation
useradd -o -d /var/spool/vacation -g 10002 -u 10002 -s /bin/false vacation
Instalujemy dodatkowe biblioteki :
apt-get install libmail-sender-perl libdbd-pg-perl libemail-valid-perl libmime-perl liblog-log4perl-perl liblog-dispatch-perl libgetopt-argvfile-perl
Instalujemy skrypt vacation :
mkdir /usr/lib/postfixadmin
cp vacation.pl /usr/lib/postfixadmin/vacation.pl
chown -R root:vacation /usr/lib/postfixadmin
chmod 750 /usr/lib/postfixadmin/ /usr/lib/postfixadmin/vacation.pl
Ustawiamy transport :
/etc/postfix/master.cf
Dodajemy na końcu pliku :
vacation unix - n n - - pipe
flags=Rq user=vacation argv=/usr/lib/postfixadmin/vacation.pl -f ${sender} -- ${recipient}
Tworzymy nowy transport Postfix:
/etc/postfix/transport
o zawartości :
autoreply.yourdomain.com vacation:
#za yourdomain.com podajemy swoją domenę.
W pliku /etc/postfix/main.cf
Dodajemy :
transport_maps = hash:/etc/postfix/transport
dovecot_destination_recipient_limit = 1
Wykonujemy w konsoli :
postmap /etc/postfix/transport
postfix reload
Tworzymy plik /etc/postfixadmin/vacation.conf
Wrzucamy zawartość:
$db_type = 'mysql';
$db_host = '';
$db_username = 'postfixadmin';
$db_password = 'haslo_baza_postfixadmin';
$db_name = 'postfixadmin';
$vacation_domain = 'autoresponder.eproit';
$smtp_server = 'localhost';
$smtp_client = 'localhost';
$smtp_auth = undef;
$smtp_authid = 'someuser';
$smtp_authpwd = 'somepass';
$smtp_server_port = 25;
$syslog = 0;
$logfile='/var/log/vacation.log';
$log_level = 1;
$log_to_file = 0;
$interval = 0;
1;
# $logfile='/var/log/vacation.log';
# 2 = debug + info, 1 = info only, 0 = error only
- zmieniamy typ bazy danych
- podajemy dostęp do bazy danych Postfixadmin
- konfigurujemy zapis logów
chown root:vacation /etc/postfixadmin/vacation.conf
chmod 640 /etc/postfixadmin/vacation.conf
touch /var/log/vacation.log
chown root:vacation /var/log/vacation.log
chmod 620 /var/log/vacation.log
Dodajemy do pliku /etc/hosts wpis:
127.0.0.1 autoresponder.eproit
W pliku /usr/lib/postfixadmin/vacation.pl
zmieniamy :
if (-f "/etc/mail/postfixadmin/vacation.conf") {
require "/etc/mail/postfixadmin/vacation.conf";
}
na
if (-f "/etc/postfixadmin/vacation.conf") {
require "/etc/postfixadmin/vacation.conf";
}
Konfigurujemy PostfixAdmin:
W pliku /etc/postfixadmin/config.inc.php zmieniamy parametry :
$CONF['vacation'] = 'YES';
$CONF['vacation_domain'] = 'autoresponder.eproit';
$CONF['vacation_control'] ='YES';
$CONF['vacation_control_admin'] = 'YES';
Test :
Konfigurujemy automatyczną odpowiedź na stronie konsoli administracyjnej Postfixadmin:
http://postfixadmin.eproit/login.php
lub na konsoli użytkownika :
http://postfixadmin.eproit/users/login.php
Istnieje możliwość zintegrowania Postfixadmin z Roundcube.
Plugin Roundcube: rcb-pfa-autoresponder-master
Czy ta konfiguracja działa w 100% ?
Na jakiej wersji Debiana była robiona ?
Konfiguracja działa ale musisz każdą linijkę uważnie wklepywać:). Jest to konfiguracja dla testów.
Debian 7.7.0
Fajny tutorial, trzeba zwracać uwagi na szczegóły 🙂 (trzeba myśleć, tzn.nie jest to Ctrl+c ctrl+v w 100%).
Generalnie bdb podręcznik postawienia serwera poczty, dla obytych w temacie.
Dzięki !!!
Walczę już dłuższy czas z ta konfiguracją na Debian 8. Niestety nie jestem zbyt biegły w tym temacie. Czy jest opcja na jakąś małą pomoc? Jestem dokładnie w „8. Konfiguracja szyfrowania – DOVECOT”
:~# telnet localhost 587
Trying ::1…
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.
:~#
LOG
email postfix/smtpd[5299]: warning: cannot get RSA private key from file /etc/ssl/CA/privkey.omegaserwis.com.pl.pem: disabling TLS support
email postfix/smtpd[5299]: warning: TLS library problem: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch:x509_cmp.c:341:
email postfix/smtpd[5299]: fatal: unexpected command-line argument: #
email postfix/master[3509]: warning: process /usr/lib/postfix/smtpd pid 5299 exit status 1
email postfix/master[3509]: warning: /usr/lib/postfix/smtpd: bad command startup — throttling