Funkcjonalności warstw architektury referencyjnej Big Data
Przeczytaj blog, aby w najprostszy sposób poznać różne warstwy w architekturze Big Data i ich funkcjonalności.
Prowadzenie własnego serwera e-mail może być bardzo satysfakcjonujące. Odpowiadasz za swoje dane. Umożliwia także większą elastyczność dzięki opcjom dostawy. Jest jednak kilka wyzwań. Ryzykujesz otwarcie swojego serwera na luki, a także uczynienie go potencjalnym przekaźnikiem dla spamerów.
W ten sposób przejdźmy do uruchomienia własnego serwera pocztowego.
Do zainstalowania potrzebne są trzy elementy oprogramowania, które nie są zawarte w systemie podstawowym FreeBSD:
OpenSMTPd to agent przesyłania poczty (MTA) i agent dostarczania poczty (MDA). Oznacza to, że może komunikować się z innymi serwerami pocztowymi za pośrednictwem SMTP
protokołu, a także obsługuje dostarczanie poczty do skrzynek pocztowych poszczególnych użytkowników. Będziemy konfigurować OpenSMTPd, aby mógł komunikować się z serwerami zewnętrznymi (filtrowanymi przez spam) i dostarczać pocztę lokalnym użytkownikom, a także dostarczać pocztę lokalną od użytkownika do użytkownika.
Dovecot to MDA, która odczytuje lokalne skrzynki pocztowe i podaje je użytkownikom przez IMAP lub POP3. Będzie używać skrzynek pocztowych użytkowników lokalnych do udostępniania tej zawartości.
Spamd to usługa filtrowania poczty. Możemy przekazywać pocztę przez spam, a ona będzie filtrować pocztę na podstawie różnych czarnych list, białych list i szarej listy.
Ogólny pomysł na ten serwer pocztowy wymaga kilku różnych ścieżek:
Outside world -> Firewall -> spamd -> OpenSMTPD -> User mail boxes
Outside world -> Firewall (spamd-whitelist) -> OpenSMTPD -> User mailboxes
Outside world -> Firewall (IMAP/POP3) -> Dovecot
Outside world -> Firewall (SMTPD submission)
W tym samouczku użyjemy wersji PBS OpenBSD dla naszego firewalla. Możesz także użyć ipfw
, gdy konfiguracja jest bardzo podobna.
Uwaga: Vultr domyślnie blokuje port 25, z którego wszędzie korzystają serwery SMTP. Jeśli chcesz uruchomić w pełni funkcjonalny serwer pocztowy, musisz otworzyć ten port.
Najpierw musimy zainstalować wymagane programy.
Zakładając, że działasz jako użytkownik z skonfigurowanym dostępem sudo, możemy uruchomić następujące polecenia. Będą się różnić w zależności od tego, czy korzystasz z portów, czy pakietów.
O ile nie potrzebujesz specjalnych funkcji wbudowanych w te narzędzia, zaleca się instalację za pomocą pakietów. Jest to łatwiejsze, zajmuje mniej czasu i zasobów serwera oraz zapewnia intuicyjny, przyjazny dla użytkownika interfejs.
sudo pkg install opensmtpd dovecot spamd
Następujące make
polecenia dadzą ci wiele opcji kompilacji, domyślne będą działać dobrze. Nie zmieniaj ich, chyba że dokładnie wiesz, co robisz.
sudo portsnap fetch update # or run portsnap fetch extract if using ports for the first time
cd /usr/ports/mail/opensmtpd
make install # Installs openSMTPd
make clean
cd /usr/ports/mail/dovecot
make install # Installs dovecot
make clean
cd /usr/ports/mail/spamd
make install # Installs spamd
make clean
Będziemy musieli dodać następujące wiersze /etc/rc.conf
:
pf_enable="YES"
pf_rules="/usr/local/etc/pf.conf"
pflog_enable="YES"
pflog_logfile="/var/log/pflog"
obspamd_enable="YES"
obspamd_flags="-v"
obspamlogd_enable="YES"
dovecot_enable="YES"
Aby skonfigurować PF, możemy utworzyć /usr/local/etc/pf.conf
:
## Set public interface ##
ext_if="vtnet0"
## set and drop IP ranges on the public interface ##
martians = "{ 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, \
10.0.0.0/8, 169.254.0.0/16, 192.0.2.0/24, \
0.0.0.0/8, 240.0.0.0/4 }"
table <spamd> persist
table <spamd-white> persist
# Whitelisted webmail services
table <webmail> persist file "/usr/local/etc/pf.webmail.ip.conf"
## Skip loop back interface - Skip all PF processing on interface ##
set skip on lo
## Sets the interface for which PF should gather statistics such as bytes in/out and packets passed/blocked ##
set loginterface $ext_if
# Deal with attacks based on incorrect handling of packet fragments
scrub in all
# Pass spamd whitelist
pass quick log on $ext_if inet proto tcp from <spamd-white> to $ext_if port smtp \
-> 127.0.0.1 port 25
# Pass webmail servers
rdr pass quick log on $ext_if inet proto tcp from <gmail> to $ext_if port smtp \
-> 127.0.0.1 port 25
# pass submission messages.
pass quick log on $ext_if inet proto tcp from any to $ext_if port submission modulate state
# Pass unknown mail to spamd
rdr pass log on $ext_if inet proto tcp from {!<spamd-white> <spamd>} to $ext_if port smtp \
-> 127.0.0.1 port 8025
## Blocking spoofed packets
antispoof quick for $ext_if
## Set default policy ##
block return in log all
block out all
# Drop all Non-Routable Addresses
block drop in quick on $ext_if from $martians to any
block drop out quick on $ext_if from any to $martians
pass in inet proto tcp to $ext_if port ssh
# Allow Ping-Pong stuff. Be a good sysadmin
pass inet proto icmp icmp-type echoreq
# Open up imap/pop3 support
pass quick on $ext_if proto tcp from any to any port {imap, imaps, pop3, pop3s} modulate state
# Allow outgoing traffic
pass out on $ext_if proto tcp from any to any modulate state
pass out on $ext_if proto udp from any to any keep state
To działa konfiguracja PF. Jest to stosunkowo proste, ale należy wyjaśnić kilka dziwactw.
Po pierwsze, definiujemy naszą $ext_if
zmienną, aby nasze vtnet0
urządzenie mogło z niej później korzystać. Definiujemy również nieprawidłowe adresy IP, które należy upuścić na interfejsie zewnętrznym.
Definiujemy również dwie tabele, spamd
i spamd-white
- te dwie tabele są tworzone przez spamd w domyślnej konfiguracji. Ponadto definiujemy tabelę o nazwie, webmail
której będziemy używać, aby umożliwić niektórym głównym dostawcom poczty internetowej.
Aby wyświetlić tabelę, możesz użyć polecenia, pfctl -t tablename -T show
aby wyświetlić listę elementów w tabeli.
Ustawiliśmy kilka reguł PF: pomiń przetwarzanie na interfejsie lokalnym, włącz statystyki na interfejsie zewnętrznym i przeszukuj przychodzące pakiety.
Dalej jest jedna z ważniejszych części, w której zarządzamy wysyłaniem naszego ruchu do spamu lub OpenSMTPd.
Najpierw jest reguła przekierowania (zwróć uwagę na składnię tutaj, FreeBSD 11 używa starszej stylu składni PF (wcześniejszej niż OpenBSD 4.6), więc składnia może wydawać się dziwna. Jeśli otrzymamy cokolwiek na smtp od hosta wymienionego w spamd
tabeli lub niewymienionego w spamd-white
stół, możemy przekierować połączenie przez do spamd demona, który zajmuje się tymi połączeniami. kolejne trzy zasady są pASSTHROUGH reguły tak, że rzeczywiście możemy odbierać pocztę. Mijamy wiadomości z adresów IP wymienionych w sekcji spamd-white
i webmail
tabel prosto do OpenSMTPd. Ponadto akceptujemy wiadomości wysyłane przez port przesyłania ( 587
).
Następnie istnieje kilka zasad porządkowania, które ustawiają nasze domyślne zasady i akceptują wiadomości SSH i ICMP.
Następnie przekazujemy IMAP i POP3 na naszym interfejsie zewnętrznym w celu uzyskania dostępu do Dovecot.
Wreszcie zezwalamy na cały ruch wychodzący. Jeśli chcesz dodać dodatkowe zabezpieczenia, możesz ograniczyć liczbę przekazywanych portów, ale w przypadku serwera jednorazowego użytku nie jest problemem przejście wszystkich.
Uruchom PF:
sudo service pf start
Po skonfigurowaniu zapory możemy przejść do konfiguracji serwera pocztowego.
OpenSMTPd ma bardzo prostą i łatwą do odczytania składnię konfiguracji. Cała konfiguracja robocza może zmieścić się w 14 liniach, jak widać poniżej:
#This is the smtpd server system-wide configuration file.
# See smtpd.conf(5) for more information.
ext_if=vtnet0
# If you edit the file, you have to run "smtpctl update table aliases"
table aliases file:/etc/mail/aliases
table domains file:/etc/mail/domains
# Keys
pki mail.example.com key "/usr/local/etc/letsencrypt/live/mail.example.com/privkey.pem"
pki mail.example.com certificate "/usr/local/etc/letsencrypt/live/mail.example.com/fullchain.pem"
# If you want to listen on multiple subdomains (e.g. mail.davidlenfesty) you have to add more lines
# of keys, and more lines of listeners
# Listen for local SMTP connections
listen on localhost hostname mail.example.com
# listen for filtered spamd connections
listen on lo0 port 10026
# Listen for submissions
listen on $ext_if port 587 tls-require auth pki mail.example.com tag SUBMITTED
# Accept mail from external sources.
accept from any for domain <domains> alias <aliases> deliver to maildir "~/mail"
accept for local alias <aliases> deliver to maildir "~/mail"
accept from local for any relay tls
accept tagged SUBMITTED for any relay tls
Po pierwsze, ponownie definiujemy nasz interfejs zewnętrzny, a także kilka tabel, aliasów i domen. Następnie przechodzimy do klucza SSL i certyfikatu dla wszystkich domen, w których chcemy obsługiwać pocztę.
W następnej sekcji definiujemy interfejsy i porty, na których chcemy nasłuchiwać. Po pierwsze, nasłuchujemy na localhost dla naszej mail.example.com
domeny, dla wszelkich połączeń lokalnych. Następnie nasłuchujemy wiadomości odfiltrowanych przez spam i przesłanych wiadomości w interfejsie zewnętrznym. Wreszcie nasłuchujemy zgłoszeń, 587
które odbywają się na porcie i ze względów bezpieczeństwa wymagamy ich uwierzytelnienia.
Wreszcie są nasze accept
ustawienia. Akceptujemy każdą wiadomość dla którejkolwiek z naszych domen zdefiniowanych w naszej domains
tabeli dla aliasów w naszej aliases
tabeli, aby dostarczyć ją do katalogu domowego w maildir
formacie. Następnie akceptujemy wszystkie połączenia lokalne dla lokalnych skrzynek pocztowych i przekazujemy nasze wiadomości, abyśmy mogli wysyłać wiadomości e-mail. Wreszcie, akceptujemy nasze przesłane wiadomości do przekazania. Gdybyśmy nie wymagali uwierzytelnienia dla naszego portu przesyłania danych, stanowiłoby to duże zagrożenie bezpieczeństwa. Pozwoliłoby to każdemu wykorzystać nasz serwer jako przekaźnik spamu.
FreeBSD jest dostarczany z domyślnym plikiem aliasu /etc/mail/aliases
w następującym formacie:
vuser1: user1
vuser2: user1
vuser3: user1
vuser4: user2
Określa różne skrzynki pocztowe i miejsce, w którym chcemy przekazywać wiadomości wysłane do tych zdefiniowanych skrzynek pocztowych. Możemy zdefiniować naszych użytkowników jako użytkowników systemu lokalnego lub zewnętrzne skrzynki pocztowe, do których będziemy przekazywać dalej. Domyślny plik FreeBSD jest dość opisowy, więc możesz odwoływać się do niego w celach informacyjnych.
FreeBSD nie dostarcza domyślnego pliku domen, ale jest to niezwykle proste:
# Domains
example.com
mail.example.com
smtp.example.com
To tylko zwykły plik tekstowy z każdą domeną, której chcesz słuchać w nowej linii. Możesz dodać komentarz za pomocą #
symbolu. Ten plik istnieje po prostu, aby można było użyć mniejszej liczby wierszy konfiguracji.
Istnieją dwa sposoby zabezpieczenia komunikacji z serwerem poczty, samopodpisanymi i podpisanymi certyfikatami. Z pewnością możliwe jest samopodpisanie certyfikatów, jednak usługi takie jak Let's Encrypt zapewniają bezpłatne i niezwykle łatwe w użyciu podpisywanie.
Najpierw musimy zainstalować program certbot.
sudo pkg install py-certbot
Alternatywnie można go zainstalować z portami:
cd /usr/ports/security/py-certbot
make install
make clean
Następnie, aby uzyskać certyfikat, musisz upewnić się, że otworzyłeś port 80
na zewnętrznym interfejsie. Dodaj następujące wiersze gdzieś w regułach filtrowania w /usr/local/etc/pf.conf
:
pass quick on $ext_if from any to any port http
Następnie uruchom, pfctl -f /usr/local/etc/pf.conf
aby ponownie załadować zestaw reguł.
Następnie możesz uruchomić polecenie dla wszystkich domen, dla których chcesz uzyskać certyfikat:
certbot certonly --standalone -d mail.example.com
Zalecane jest skonfigurowanie wpisu pliku crontab, aby był uruchamiany certbot renew
co 6 miesięcy, aby upewnić się, że certyfikaty nie wygasają.
Następnie dla każdej odpowiedniej domeny możesz zmodyfikować linie, aby wskazywały właściwy plik klucza:
pki mail.example.com key "/usr/local/etc/letsencrypt/live/mail.example.com/privkey.pem"
pki mail.example.com certificate "/usr/local/etc/letsencrypt/live/mail.example.com/fullchain.pem"
Edytuj zabezpieczenia:
sudo chmod 700 /usr/local/etc/letsencrypt/archive/mail.example.com/*
Uwaga: Musisz to zrobić dla każdego oryginalnego pliku klucza, w przeciwnym razie OpenSMTPd ich nie otworzy.
Teraz możemy uruchomić usługę:
sudo service smtpd start
Tutaj używamy demona spamd OpenBSD, aby zmniejszyć ilość spamu, który otrzymujemy z Internetu. Zasadniczo odfiltrowuje wiadomości z adresów IP, które są znane jako złe z różnych źródeł spamu, a także (domyślnie) przychodzące połączenia „szarej listy”. Spamd próbuje również zmarnować czas spamera, „jąkając się” na czarnych i szarych połączeniach, co oznacza, że rozkłada swoją odpowiedź na kilka sekund, co zmusza klienta do pozostania otwartym dłużej niż zwykle.
Szare listy połączeń są wykonywane, gdy łączy się nowy adres IP, który nie znajduje się na żadnej czarnej liście ani białej liście. Gdy nowy adres się połączy, spamd upuszcza wiadomość z niepotrzebnym komunikatem o błędzie, a następnie dodaje ją do listy tymczasowej. Ponieważ spamerzy otrzymują wynagrodzenie za dostarczone wiadomości, nie ponawiają próby wystąpienia błędu, natomiast legalna usługa spróbuje ponownie stosunkowo szybko.
Będziesz musiał uruchomić następujące polecenia, aby zamontować fdescfs
:
mount -t fdescfs null /dev/fd
Następnie musisz dodać ten wiersz do /etc/fstab
:
fdescfs /dev/fd fdescfs rw 0 0
Domyślny plik konfiguracyjny (znaleziony w /usr/local/etc/spamd/spamd.conf.sample
) będzie działał dobrze. Możesz go edytować, aby dodać nowe źródła lub zmienić źródła, z których korzystasz:
sudo cp /usr/local/etc/spamd/spamd.conf.sample /usr/local/etc/spamd/spamd.conf
Możemy uruchomić usługę w następujący sposób:
sudo service obspamd start
W tym momencie konfigurowany jest spam.
Jednym z problemów związanych z szarą listą jest to, że duże usługi pocztowe często wysyłają pocztę za pośrednictwem jednego z wielu różnych buforów i nie ma gwarancji, że ten sam serwer będzie wysyłał wiadomość za każdym razem. Jednym z rozwiązań jest dodanie do białej listy zakresów adresów IP używanych przez różne usługi poczty internetowej. Do tego służy tabela poczty internetowej w konfiguracji PF. Ta strategia może przynieść odwrotny skutek, jeśli podasz adres IP, z którego korzysta spamer, ale dopóki będziesz ostrożny z tym, jakie zakresy umieścisz w tabeli, nic ci nie będzie.
Aby dodać zakres wiadomości e-mail do tabeli poczty internetowej, możesz uruchomić następujące polecenie:
pfctl -t webmail -T add 192.0.2.0/24
Jeśli chcesz, aby użytkownicy mieli dostęp do swojej poczty bez logowania przez SSH, potrzebujesz MDA obsługującej IMAP i / lub POP3. Bardzo popularnym programem jest Dovecot, z dość prostą konfiguracją i potężnymi funkcjami.
Możemy skopiować domyślną konfigurację:
cd /usr/local/etc/dovecot
cp -R example-config/* ./
Konfiguracja składa się z kilku różnych plików. Aby zobaczyć różnice między konfiguracją a wartościami domyślnymi dovecot, uruchom poniższe polecenie:
sudo doveconf -n
Oto prosta, działająca konfiguracja:
# 2.3.2.1 (0719df592): /usr/local/etc/dovecot/dovecot.conf
# OS: FreeBSD 11.2-RELEASE amd64
# Hostname: mail.example.com
hostname = mail.example.com
mail_location = maildir:~/mail
namespace inbox {
inbox = yes
location =
mailbox Archive {
auto = create
special_use = \Archive
}
mailbox Archives {
auto = create
special_use = \Archive
}
mailbox Drafts {
auto = subscribe
special_use = \Drafts
}
mailbox Junk {
auto = create
autoexpunge = 60 days
special_use = \Junk
}
mailbox Sent {
auto = subscribe
special_use = \Sent
}
mailbox "Sent Mail" {
auto = no
special_use = \Sent
}
mailbox "Sent Messages" {
auto = no
special_use = \Sent
}
mailbox Spam {
auto = no
special_use = \Junk
}
mailbox Trash {
auto = no
autoexpunge = 90 days
special_use = \Trash
}
prefix =
separator = /
}
passdb {
args = imap
driver = pam
}
ssl = required
ssl_cert = </usr/local/etc/letsencrypt/live/mail.example.com/fullchain.pem
ssl_dh = </usr/local/etc/dovecot/dh.pem
ssl_key = </usr/local/etc/letsencrypt/live/mail.example.com/privkey.pem
userdb {
driver = passwd
}
Większość plików konfiguracyjnych będzie w conf.d
Ważnymi nich są 10-auth.conf
, 10-mail.conf
i 10-ssl.conf
.
Możesz skonfigurować różne skrzynki pocztowe, w których używasz 15-mailboxes.conf
. To, co widać powyżej, jest dobrą konfiguracją dla wielu systemów, ale przebieg może się różnić. Zaleca się, aby bawić się tym z jak największą liczbą różnych klientów.
Większość ustawień domyślnych będzie poprawna. Jeśli chcesz użyć użytkowników systemu do uwierzytelnienia, będziesz musiał dokonać edycji 10-auth.conf
.
Odkomentuj następujący wiersz:
! include auth-system.conf.ext
Musimy wygenerować parametry Diffie-Hellmana:
sudo nohup openssl dhparam -out /usr/local/etc/dovecot/dh.pem
Uwaga: Uruchomienie zajmie dużo czasu. Znacznie dłużej niż można się spodziewać.
Możemy teraz uruchomić Dovecot:
sudo service dovecot start
W tym momencie mamy funkcjonalny, bezpieczny i stosunkowo wolny od spamu serwer pocztowy.
Kilka innych rzeczy do rozważenia tutaj to wykorzystanie SpamAssassin do heurystycznego pozbycia się spamu, a także znalezienie większej ilości spamowanych czarnych list zamieszczanych przez zaufane źródła.
Przeczytaj blog, aby w najprostszy sposób poznać różne warstwy w architekturze Big Data i ich funkcjonalności.
Chcesz zobaczyć rewolucyjne wynalazki Google i jak te wynalazki zmieniły życie każdego człowieka dzisiaj? Następnie czytaj na blogu, aby zobaczyć wynalazki Google.
13 komercyjnych narzędzi do ekstrakcji danych z Big Data
Whatsapp w końcu uruchomił aplikację Desktop dla użytkowników komputerów Mac i Windows. Teraz możesz łatwo uzyskać dostęp do Whatsapp z systemu Windows lub Mac. Dostępne dla Windows 8+ i Mac OS 10.9+
Energia jądrowa jest zawsze pogardzana, nigdy jej nie szanujemy z powodu przeszłych wydarzeń, ale nie zawsze jest zła. Przeczytaj post, aby dowiedzieć się więcej na ten temat.
Koncepcja autonomicznych samochodów, które wyjadą na drogi za pomocą sztucznej inteligencji, to marzenie, które mamy już od jakiegoś czasu. Ale pomimo kilku obietnic nigdzie ich nie widać. Przeczytaj ten blog, aby dowiedzieć się więcej…
Wzrasta liczba ataków ransomware, ale czy sztuczna inteligencja może pomóc w radzeniu sobie z najnowszym wirusem komputerowym? Czy AI jest odpowiedzią? Przeczytaj tutaj, wiedz, że sztuczna inteligencja jest zmorą lub zgubą
Sztuczna inteligencja nie jest dla ludzi nową nazwą. Ponieważ sztuczna inteligencja jest włączona do każdego strumienia, jednym z nich jest opracowywanie narzędzi zwiększających ludzką wydajność i dokładność. Skorzystaj z tych niesamowitych narzędzi uczenia maszynowego i uprość swoje codzienne zadania.
Zawsze potrzebujemy Big Data Analytics do efektywnego zarządzania danymi. W tym artykule omówiliśmy kilka technik analizy Big Data. Sprawdź ten artykuł.
Czy jesteś również ofiarą ataków DDOS i nie masz pewności co do metod zapobiegania? Przeczytaj ten artykuł, aby rozwiązać swoje pytania.