=====================================================================
Przygotowanie
=====================================================================Jeśli serwer poczty z postfix stoi za firewallem koniecznie należy przekierować port 25 na serwer poczty. Inaczej poczta nie będzie dochodzić. Port TCP 25 musi być otwarty, ponieważ postfix jak i inne serwery pocztowe nasłuchują na tym porcie.
1. Zakup dowolnej domeny.
2. Rejestrujemy własną domenę na serwerach DNS, dla przykładu https://freedns.42.pl/
- Zakładamy konto,
- Definiujemy strefę:
W pole nazwa strefy wpisujemy pełną nazwę zakupionej domeny.
Wzorzec wybieramy pusty.
Typ strefy podstawowy.
- Wypełniamy poszczególne rekordy i pola strefy:
@ odnosi się do nazwy strefy (do samego siebie) więc definiujemy rekord MX serwera poczty. Taką samą nazwę potem definiujemy w postfix w pliku /etc/main.cf (hostname).
Serwer poczty również ma nazywać się poczta ustalamy to w pliku /etc/sysconfig/network.
Aby serwer poczty był widoczny (działa ping) należy zdefiniować jeszcze rekord A dla nazwy "poczta".
Najpierw ustalamy rekord A dla naszego IP.
Następnie dla "poczta" ustalamy nr IP.
To wystarczy aby nasz serwer był widoczny. Oczywiście zakładamy poślizg wynikający z odświeżania serwerów DNS.
=====================================================================
ETAP I
Postfix
=====================================================================Postfix
Skonfigurować firewall serwera poczty.
Ustalić nazwę serwera np: "slack", "mario" lub "poczta"
tymczasowo poleceniem hostname nazwa_serwera
lub na stałe zmieniając zapisy w pliku /etc/sysconfig/network
HOSTNAME=nazwa_serwera
Koniecznie odinstalować sandmail'a, który może blokować nasłuch na porcie 25, uniemożliwiając tym samy start postfix'a:
# yum erase sendmailInstalacja:
# yum install postfixUtworzyć plik /etc/aliases.db
# postfix stop # rm -f /etc/aliases.db # newaliases # postfix start
Konfiguracja /etc/postfix/main.cf
mydomain = domena.plPoniższa konfiguracja spokojnie starczy na wysyłanie i odbieranie:
myorigin = $mydomain
myhostname = poczta.domena.pl
mydestination = $myhostname, localhost.$mydomain, $mydomain
mynetworks = 192.168.1.0/24 127.0.0.0/8
inet_interfaces = all
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
mail_owner = postfix
mydomain = domena.plmyorigin = $mydomaininet_interfaces = allmydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
unknown_local_recipient_reject_code = 550
mynetworks = 192.168.1.0/24, 127.0.0.0/8alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
debug_peer_level = 2
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
xxgdb $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-2.3.3/samples
readme_directory = /usr/share/doc/postfix-2.3.3/README_FILES
Oczywiście "domena.pl" zastępujemy swoją własną i zarejestrowaną w serwerach dns domeną.
Uruchomienie/Zatrzymanie/Restart:
postfix start / stop / reloadlub
service postfix reloadlub
service postfix restart
Sprawdzenie postfix'a (sesja SMTP):
# telnet localhost 25Odpowiedź serwera poczty
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 poczta.domena.pl ESMTP Postfix
Wprowadzić polecenia wysłania testowego email'a:
mail from: mail_nadawcy@domena.plSprawdź swoją skrzynkę w necie.
rcpt to: mail_odbiorcy@o2.pl
data
Tekst próbny...
.
quit
Logi:
/var/log/maillog
/var/log/messages
=====================================================================
ETAP II
SASL
=====================================================================SASL
Uwierzytelnianie SMTP poprzez SASL
Simple Mail Transfer Protocol - protokół komunikacyjny, którego demon działa na 25 porcie. Protokół ten nie posiada mechanizmu weryfikacji nadawcy, co ułatwia rozpowszechnianie niepożądanych treści poprzez pocztę elektroniczną (spam). Uwierzytelnianie SMTP pozwala na identyfikację na podstawie loginu oraz hasła.
Instalacja SASL
# yum install cyrus-saslUruchomienie
# service saslauthd startWpisanie w autostart
# chkconfig saslauthd --level 35 onlub wpis do pliku /etc/rc.local
# service saslauthd startKonfiguracja pliku /usr/lib/sasl2/smtpd.conf
pwcheck_method: saslauthdKonfiguracja pliku /etc/postfix/main.cf
smtpd_sasl_auth_enable = yes=====================================================================
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
ETAP III
Dovecot
=====================================================================Dovecot
Dovecot - serwer pozwalający na udostępnianie protokołu POP3 i IMAP aplikacjom klienckim poczty.
Instalacja
# yum install dovecotKonfiguracja /etc/dovecot.conf (udostępnienie portów)
protocols = imap imaps pop3 pop3sUruchomienie i wpisanie do autostartu
# service dovecot start
# chkconfig dovecot --level 35 on
Przygotowanie transmisji szyfrowanej
Usunięcie starego i utworzenie nowego certyfikatu w systemie.
=====================================================================
1. Sprawdzenie czy domena serwera jest prawidłowo ustawiona:
2. Tworzymy bazę danych MySQL do zarządzania użytkownikami i obsługiwanymi domenami.
a) tworzymy bazę danych "mail" i użytkownika "postfix" z prawami do odczytu z linii komend mysql>:
3. Konfigurujemy Postfix.
Serwer pocztowy powinien poprawnie odczytywać informacje z tabel, więc w katalogu /etc/postfix tworzymy pliki:
a) wykonujemy polecenie nano /etc/postfix/virtual_mailbox_domains.cf sprawdza czy domena jest obsługiwana:
Informujemy serwer postfix o nowoutworzonych plikach oraz tworzymy id użytkownika i grupy vmail
Usunięcie starego i utworzenie nowego certyfikatu w systemie.
# rm -f /etc/pki/dovecot/certs/dovecot.pem
# cd /etc/pki/dovecot/certs/
# utworzyc????certyfikat dovecot.pem
=====================================================================
ETAP IV
MySQL
=====================================================================MySQL
1. Sprawdzenie czy domena serwera jest prawidłowo ustawiona:
# hostname -fW przypadku braku podania pełnej domeny należy wyedytować plik /etc/hosts:
127.0.0.1 localhostWażne aby w drugim wierszu najpierw znajdowała się nazwa domeny, a później nazwa serwera.
127.0.0.1 mail.domena.pl mail
2. Tworzymy bazę danych MySQL do zarządzania użytkownikami i obsługiwanymi domenami.
a) tworzymy bazę danych "mail" i użytkownika "postfix" z prawami do odczytu z linii komend mysql>:
CREATE DATABASE mail;b) tworzymy tabelę "domeny" zawierającą listę obsługiwanych domen:
GRANT SELECT ON mail.* to postfix@localhost IDENTIFIED BY 'haslo';
CREATE TABLE domeny (id int (11) NOT NULL AUTO_INCREMENT PRIMARY KEY, nazwa varchar (100) NOT NULL) Engine = InnoDB;c) tworzymy tabelę "uzytkownicy" zawierającą listę użytkowników wraz z powiązaniem do odpowiedniej domeny w tabeli "domeny":
CREATE TABLE uzytkownicy (id int (11) NOT NULL AUTO_INCREMENT PRIMARY KEY, domena_id int (11) NOT NULL, uzytkownk varchar (100) NOT NULL, haslo varchar (32) NOT NULL, CONSTRAINT UNIQUE_EMAIL UNIQUE (domena_id, uzytkownik), FOREIGN KEY (domena_id) REFERENCES domeny (id) ON DELETE CASCADE) Engine = InnoDB;d) tworzymy tabelę "aliasy" zawierającą listę adresów do przesłania dalej :
CREATE TABLE aliasy (id int (11) NOT NULL AUTO_INCREMENT PRIMARY KEY, domena_id int (11) NOT NULL, email_adresat varchar (20) NOT NULL, przekieruj_do varchar (100) NOT NULL, FOREIGN KEY (domena_id) REFERENCES domeny (id) ON DELETE CASCADE) Engine =InnoDB;e) tworzymy widok - e-mail / hasło:
CREATE VIEW uzytkownicy_view AS SELECT CONCAT (uzytkownicy.uzytkownik, '@', domeny.nazwa) AS email, uzytkownicy.haslo FROM uzytkownicy LEFT JOIN domeny ON uzytkownicy.domena_id=domeny.id;f) tworzymy widok
CREATE VIEW aliasy_view AS SELECT CONCAT (aliasy.email_adresat, '@', domeny.nazwa) AS email, przekieruj_do FROM aliasy LEFT JOIN domeny ON aliasy.domena_id = domeny.id;
3. Konfigurujemy Postfix.
Serwer pocztowy powinien poprawnie odczytywać informacje z tabel, więc w katalogu /etc/postfix tworzymy pliki:
a) wykonujemy polecenie nano /etc/postfix/virtual_mailbox_domains.cf sprawdza czy domena jest obsługiwana:
#nazwa użytkownika bazyb) wykonujemy polecenie nano /etc/postfix/virtual_mailbox_maps.cf - plik sprawdza, czy użytkownik jest zdefiniowany w bazie.
user = postfix
#hasło do bazy
password = haslo
#host na którym znajduje się baza danych
host = 127.0.0.1
#nazwa bazy danych
dbname = mail
#zapytanie dla serwera poczty
query = SELECT 1 FROM domeny WHERE nazwa = '%s'
user = postfixc) wykonujemy polecenie nano /etc/postfix/virtual_alias_maps.cf .
password = haslo
host = 127.0.0.1
dbname = mail
query = SELECT 1 FROM uzytkownicy_view WHERE email='%s'
user = postfixd) konfigurujemy /etc/postfix/main.cf.
password = haslo
host = 127.0.0.1
dbname = mail
query = SELECT przekieruj_do FROM aliasy_view WHERE email='%s'
Informujemy serwer postfix o nowoutworzonych plikach oraz tworzymy id użytkownika i grupy vmail
virtual_mailbox_domains=mysql:/etc/postfix/virtual_mailbox_domains.cf4. Dodajemy w systemie grupę i użytkownika vmail:
virtual_mailbox_maps=mysql:/etc/postfix/virtual_mailbox_maps.cf
virtual_alias_maps=mysql:/etc/postfix/virtual_alias_maps.cf
virtual_uid_maps=static: 5000
virtual_gid_maps=static: 5000
# groupadd -g 5000 vmaila) zmieniamy prawa dostępowe do utworzonych plików z uwagi na zapisane tam hasła:
# useradd -g vmail -u 5000 vmail -d /home/vmail -m
# chgrp postfix/etc/postfix/virtual_* (vmail?)5. Konfiguracja /etc/dovecot/dovecot.conf
# chmod 650 /etc/postfix/virtual_*
a) sprawdzamy czy w pliku jest zapis
protocols = imap imaps pop3 pop3sb) umożliwienie przesyłania niezaszyfrowanych haseł (z lenistwa):
disable_plaintext_auth = noc) wskazanie katalogu przechowywania wiadomości użytkowników /home/vmail/_domena/_użytkownik:
mail_location = maildir:/home/vmail/%d/%nd) wskazanie dozwolonych mechanizmów uwierzytelniania:
mechanisms = plain logine) wskazujemy plik w którym zawarte jest info w jaki sposób dovecot pobiera hasła użytkowników:
passdb sql { args = /etc/dovecot/dovecot-sql.confCDN
Brak komentarzy:
Prześlij komentarz