Jak nainstalovat Tiny Tiny RSS Reader na FreeBSD 11 FAMP VPS
Používáte jiný systém? Tiny Tiny RSS Reader je bezplatný a otevřený zdroj s vlastním hostitelem webového zdroje zpráv (RSS/Atom) a agregátorem určeným pro
Provozování vlastního e-mailového serveru může být docela obohacující. Máte na starosti svá data. Umožňuje vám také větší flexibilitu s vašimi možnostmi doručení. Existuje však několik výzev. Riskujete, že váš server zpřístupní zranitelnosti a že se váš server stane potenciálním přenosem pro spammery.
Když to necháme stranou, pojďme se pustit do provozu našeho vlastního poštovního serveru.
K instalaci jsou nutné tři části softwaru, které nejsou součástí základního systému FreeBSD:
OpenSMTPd je agent pro přenos pošty (MTA) a agent pro doručování pošty (MDA). To znamená, že po SMTP
protokolu může komunikovat s ostatními poštovními servery a zajišťuje i doručování pošty do schránek jednotlivých uživatelů. Nastavíme OpenSMTPd tak, aby mohl komunikovat s externími servery (filtrovaný přes spam) a doručovat poštu místním uživatelům a také doručovat místní poštu od uživatele k uživateli.
Dovecot je MDA, který čte místní poštovní schránky a poskytuje je uživatelům přes IMAP nebo POP3. K doručení tohoto obsahu použije poštovní schránky místních uživatelů.
Spamd je služba pro filtrování pošty. Můžeme přeposílat poštu přes spamd a bude filtrovat poštu na základě různých blacklistů, whitelistů a greylistů.
Obecná myšlenka tohoto poštovního serveru vyžaduje několik různých cest:
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)
V tomto tutoriálu budeme používat FreeBSD verzi PF OpenBSD pro náš firewall. Můžete také použít ipfw
, kde je konfigurace velmi podobná.
Poznámka: Vultr ve výchozím nastavení blokuje port 25, který všude používají servery SMTP. Pokud chcete provozovat plně funkční e-mailový server, budete muset tento port otevřít.
Nejprve musíme nainstalovat požadované programy.
Za předpokladu, že běžíte jako uživatel s nastaveným sudo přístupem, můžeme spustit následující příkazy. Budou se lišit v závislosti na tom, zda používáte porty nebo balíčky.
Pokud nepotřebujete specifickou funkcionalitu zabudovanou do těchto nástrojů, doporučuje se instalovat prostřednictvím balíčků. Je jednodušší, zabere méně času a zdrojů serveru a poskytuje intuitivní a uživatelsky přívětivé rozhraní.
sudo pkg install opensmtpd dovecot spamd
Následující make
příkazy vám poskytnou spoustu možností kompilace, výchozí hodnoty budou fungovat dobře. Neměňte je, pokud přesně nevíte, co děláte.
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
Budeme muset přidat následující řádky /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"
Pro konfiguraci PF můžeme vytvořit naše /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
Toto je funkční konfigurace PF. Je to relativně jednoduché, ale je potřeba vysvětlit i pár vtípků.
Nejprve definujeme naši $ext_if
proměnnou, kterou naše vtnet0
zařízení použije později. Definujeme také neplatné IP adresy, které by měly být vynechány na externím rozhraní.
Dále definujeme dvě tabulky spamd
a spamd-white
- tyto dvě tabulky vytváří spamd ve výchozí konfiguraci. Také definujeme tabulku pojmenovanou, webmail
kterou použijeme k povolení přístupu některých hlavních poskytovatelů webmailu.
Chcete-li zobrazit tabulku, můžete pomocí příkazu zobrazit pfctl -t tablename -T show
seznam prvků v tabulce.
Nastavili jsme několik pravidel PF: přeskočit zpracování na místním rozhraní, povolit statistiky na externím rozhraní a vyčistit příchozí pakety.
Další je jedna z důležitějších částí, kde řídíme odesílání našeho provozu do spamu nebo OpenSMTPd.
První na řadě je pravidlo přesměrování (všimněte si syntaxe zde, FreeBSD 11 používá starší styl syntaxe PF (před OpenBSD 4.6), takže syntaxe se může zdát zvláštní. Pokud obdržíme něco na smtp od hostitele uvedeného v spamd
tabulce nebo neuvedeného v spamd-white
tabulky, jsme přesměrování připojení až do spamd démona, který se zabývá tato připojení. další tři pravidla jsou pruchod pravidla, takže můžeme skutečně přijímat e-maily. Projíždíme zpráv z IP adres uvedených v části spamd-white
a webmail
tabulky rovně až do OpenSMTPd. Také přijímáme zprávy na portu pro odesílání ( 587
).
Pak je tu několik pravidel pro úklid, jak nastavit naši výchozí politiku a přijímat zprávy SSH a ICMP.
Poté předáme IMAP a POP3 na našem externím rozhraní, abychom získali přístup k Dovecotu.
Nakonec povolíme veškerý odchozí provoz. Pokud byste chtěli přidat další zabezpečení, mohli byste omezit procházející porty, ale pro jednorázový server není problém předat vše.
Začátek PF:
sudo service pf start
Nyní, když máme nastavený firewall, můžeme přejít ke konfiguraci našeho poštovního serveru.
OpenSMTPd má velmi jednoduchou a snadno čitelnou konfigurační syntaxi. Celá pracovní konfigurace se vejde do 14 řádků, jak můžete vidět níže:
#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
Nejprve opět definujeme naše externí rozhraní a také několik tabulek, aliasů a domén. Poté přejdeme ke klíči SSL a certifikátu pro všechny domény, pod kterými chceme zpracovávat poštu.
In the next section, we define the interfaces and ports we want to listen on. Firstly, we listen on localhost for our mail.example.com
domain, for any local connections. Then we listen for our spamd-filtered messages and submitted messages on the external interface. Lastly, we listen for submissions, these happen on port 587
and we are requiring them to authenticate, for security reasons.
Lastly are our accept
settings. We accept any message for any of our domains defined in our domains
table for aliases in our aliases
table, to deliver to their home directory in the maildir
format. Then we accept all local connections for local mailboxes and relay out our messages, so we can send email. Lastly, we accept our submitted messages to relay. If we didn't require authentication for our submissions port, this would be a big security hazard. This would let anyone use our server as a spam relay.
FreeBSD ships with a default alias file /etc/mail/aliases
in the following format:
vuser1: user1
vuser2: user1
vuser3: user1
vuser4: user2
This defines the different mail boxes, and where we want to forward messages sent to these defined mailboxes. We can either define our users as local system users or external mailboxes to forward to. The default FreeBSD file is quite descriptive so you can refer to that for reference.
FreeBSD does not supply a default domains file, but this is incredibly simple:
# Domains
example.com
mail.example.com
smtp.example.com
This is just a plain text file with each domain you want to listen to on a new line. You can make a comment using the #
symbol. This file exists simply so that you can use fewer lines of configuration.
There are two ways to be able to secure your communications with your mail server, self-signed and signed certificates. It is certainly possible to self-sign your certificates, however services like Let's Encrypt provide free and incredibly easy to use signing.
First we have to install the certbot program.
sudo pkg install py-certbot
Alternatively, it can be installed with ports:
cd /usr/ports/security/py-certbot
make install
make clean
Then, to get your certificate, you need to make sure you have opened up port 80
on your external interface. Add the following lines somewhere in your filtering rules in /usr/local/etc/pf.conf
:
pass quick on $ext_if from any to any port http
Then run pfctl -f /usr/local/etc/pf.conf
to reload the ruleset.
Then you can run the command for any domains you want to get a certificate for:
certbot certonly --standalone -d mail.example.com
It is recommended to set up a crontab entry to run certbot renew
once every 6 months to ensure your certificates don't expire.
Then for every relevant domain, you can modify the lines to point to the correct key file:
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"
Edit the securities:
sudo chmod 700 /usr/local/etc/letsencrypt/archive/mail.example.com/*
Note: You will have to do this for each original keyfile or else OpenSMTPd won't open them.
Now we can start the service:
sudo service smtpd start
Here we are using OpenBSD's spamd daemon to reduce the amount of spam we get from the internet. Essentially, this filters out messages from IPs that are known as bad from various spam sources, as well as (by default) "greylisting" incoming connections. Spamd also tries to waste spammer's timme by "stuttering" blacklisted and greylisted connections, which means it spreads out it's response over several seconds which forces the client to stay open for longer than usual.
Greylisting a connection is done when any new IP address connects that isn't on any blacklist or whitelist. Once the new address connects, spamd drops the message with an inocuous error message, then it adds it to a temporary list. Because spammers get paid for delivered messages, they will not retry on an error, whereas a legitimate service will retry relatively soon.
You will have to run the following to mount fdescfs
:
mount -t fdescfs null /dev/fd
Then you will have to add this line to /etc/fstab
:
fdescfs /dev/fd fdescfs rw 0 0
The default config file (found in /usr/local/etc/spamd/spamd.conf.sample
) will work fine. You can edit it to add new sources or change the sources you use:
sudo cp /usr/local/etc/spamd/spamd.conf.sample /usr/local/etc/spamd/spamd.conf
We can start the service with the following:
sudo service obspamd start
At this point spamd is set up.
Jedním z problémů s přístupem greylisting je to, že velké poštovní služby často posílají poštu přes jednu z mnoha různých spoolů a není zaručeno, že pokaždé zprávu odešle stejný server. Jedním z řešení je přidat na seznam povolených IP rozsahů používaných různými webmailovými službami. K tomu slouží webmailová tabulka v konfiguraci PF. Tato strategie se může vymstít, pokud zahrnete IP adresu, kterou používá spammer, ale pokud budete opatrní s tím, jaké rozsahy zadáte do tabulky, budete v pořádku.
Chcete-li přidat rozsah e-mailů do tabulky webové pošty, můžete spustit následující příkaz:
pfctl -t webmail -T add 192.0.2.0/24
Pokud chcete, aby uživatelé měli přístup ke své poště bez přihlášení přes SSH, budete potřebovat MDA, které podporuje IMAP a/nebo POP3. Velmi oblíbeným programem je Dovecot s poměrně jednoduchou konfigurací a výkonnými funkcemi.
Můžeme zkopírovat výchozí konfiguraci:
cd /usr/local/etc/dovecot
cp -R example-config/* ./
Konfigurace se skládá z několika různých souborů. Chcete-li vidět rozdíly mezi vaší konfigurací a výchozím nastavením dovecotu, spusťte níže uvedený příkaz:
sudo doveconf -n
Následuje jednoduchá funkční konfigurace:
# 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
}
Většina konfiguračních souborů bude in conf.d
Nejdůležitější jsou 10-auth.conf
, 10-mail.conf
, a 10-ssl.conf
.
Můžete nakonfigurovat různé poštovní schránky, které používáte v 15-mailboxes.conf
. To, co vidíte výše, je dobrá konfigurace pro mnoho systémů, ale váš počet najetých kilometrů se může lišit. Doporučuje se, abyste si s tím pohráli s co největším počtem různých klientů.
Většina výchozích nastavení bude správná. Pokud chcete k autentizaci použít systémové uživatele, budete muset upravit 10-auth.conf
.
Odkomentujte následující řádek:
!zahrnout auth-system.conf.ext
Musíme vygenerovat parametry Diffie-Hellman:
sudo nohup openssl dhparam -out /usr/local/etc/dovecot/dh.pem
Poznámka: Spuštění bude trvat dlouho. Mnohem déle, než byste čekali.
Nyní můžeme začít Dovecot:
sudo service dovecot start
V tuto chvíli máme funkční, bezpečný a relativně bez spamový poštovní server.
Některé další věci, na které se odtud můžete podívat, jsou používání SpamAssassinu k heuristickému zbavení se spamu a také hledání dalších seznamů zakázaných spamů zveřejněných zdroji, kterým důvěřujete.
Používáte jiný systém? Tiny Tiny RSS Reader je bezplatný a otevřený zdroj s vlastním hostitelem webového zdroje zpráv (RSS/Atom) a agregátorem určeným pro
Používáte jiný systém? Wiki.js je bezplatná a open source, moderní wiki aplikace postavená na Node.js, MongoDB, Git a Markdown. Zdrojový kód Wiki.js je veřejný
Používáte jiný systém? Pagekit 1.0 CMS je krásný, modulární, rozšiřitelný a lehký, bezplatný a open source systém správy obsahu (CMS) s
Používáte jiný systém? MODX Revolution je rychlý, flexibilní, škálovatelný, open source podnikový systém správy obsahu (CMS) napsaný v PHP. To i
Tento článek vás provede nastavením OpenBSD 5.5 (64-bit) na KVM pomocí Vultr VPS. Krok 1. Přihlaste se do ovládacího panelu Vultr. Krok 2. Klikněte na DEPLOY
Používáte jiný systém? osTicket je open-source systém pro podporu zákazníků. Zdrojový kód osTicket je veřejně hostován na Github. V tomto tutoriálu
Používáte jiný systém? Flarum je bezplatný a open source software fóra nové generace, díky kterému je online diskuze zábavná. Zdrojový kód Flarum je hostován o
Používáte jiný systém? TLS 1.3 je verze protokolu Transport Layer Security (TLS), který byl publikován v roce 2018 jako navrhovaný standard v RFC 8446.
Úvod WordPress je dominantním redakčním systémem na internetu. Pohání vše od blogů po složité webové stránky s dynamickým obsahem
Používáte jiný systém? Subrion 4.1 CMS je výkonný a flexibilní open source systém správy obsahu (CMS), který přináší intuitivní a jasný obsah
Tento tutoriál vám ukáže, jak nakonfigurovat službu DNS, která se snadno udržuje, snadno konfiguruje a je obecně bezpečnější než klasický BIN.
Zásobník FEMP, který je srovnatelný se zásobníkem LEMP na Linuxu, je kolekce softwaru s otevřeným zdrojovým kódem, který se obvykle instaluje společně, aby umožnil FreeBS.
MongoDB je prvotřídní NoSQL databáze, která se často používá v novějších webových aplikacích. Poskytuje vysoce výkonné dotazy, sdílení a replikaci
Používáte jiný systém? Monica je open source systém pro řízení osobních vztahů. Představte si to jako CRM (oblíbený nástroj používaný prodejními týmy v tis
Úvod Tento tutoriál ukazuje OpenBSD jako řešení pro e-commerce využívající PrestaShop a Apache. Apache je vyžadován, protože PrestaShop má složité UR
Používáte jiný systém? Fork je open source CMS napsaný v PHP. Zdrojový kód Forks je hostován na GitHubu. Tato příručka vám ukáže, jak nainstalovat Fork CM
Používáte jiný systém? Directus 6.4 CMS je výkonný a flexibilní, bezplatný a open source systém pro správu obsahu bez hlavy (CMS), který poskytuje vývojářům
VPS servery jsou často cílem útočníků. Běžný typ útoku se objevuje v systémových protokolech jako stovky neoprávněných pokusů o přihlášení přes ssh. Nastavení
Úvod OpenBSD 5.6 představilo nového démona s názvem httpd, který podporuje CGI (přes FastCGI) a TLS. K instalaci nového http není potřeba žádná další práce
Tento tutoriál vám ukáže, jak nainstalovat groupwarový iRedMail na čerstvou instalaci FreeBSD 10. Měli byste použít server s alespoň jedním gigabajtem o
Umělá inteligence není v budoucnosti, je zde přímo v současnosti V tomto blogu si přečtěte, jak aplikace umělé inteligence ovlivnily různé sektory.
Jste také obětí DDOS útoků a nemáte jasno v metodách prevence? Chcete-li vyřešit své dotazy, přečtěte si tento článek.
Možná jste slyšeli, že hackeři vydělávají spoustu peněz, ale napadlo vás někdy, jak takové peníze vydělávají? Pojďme diskutovat.
Chcete vidět revoluční vynálezy Google a jak tyto vynálezy změnily život každého dnešního člověka? Pak si přečtěte na blogu a podívejte se na vynálezy od Googlu.
Koncept aut s vlastním pohonem, která vyrazí na silnice s pomocí umělé inteligence, je snem, který už nějakou dobu máme. Ale přes několik slibů nejsou nikde vidět. Přečtěte si tento blog a dozvíte se více…
Jak se věda vyvíjí rychlým tempem a přebírá mnoho našeho úsilí, stoupá také riziko, že se vystavíme nevysvětlitelné singularitě. Přečtěte si, co pro nás může znamenat singularita.
Způsoby ukládání dat se mohou vyvíjet od narození dat. Tento blog se zabývá vývojem ukládání dat na základě infografiky.
Přečtěte si blog, abyste co nejjednodušším způsobem poznali různé vrstvy v architektuře velkých dat a jejich funkce.
V tomto digitálním světě se chytrá domácí zařízení stala klíčovou součástí života. Zde je několik úžasných výhod chytrých domácích zařízení o tom, jak náš život stojí za to žít a zjednodušit jej.
Apple nedávno vydal doplňkovou aktualizaci macOS Catalina 10.15.4, která opravuje problémy, ale zdá se, že aktualizace způsobuje další problémy, které vedou k zablokování počítačů mac. Přečtěte si tento článek a dozvíte se více