How to Install Tiny Tiny RSS Reader on a FreeBSD 11 FAMP VPS
Using a Different System? Tiny Tiny RSS Reader is a free and open source self-hosted web-based news feed (RSS/Atom) reader and aggregator, designed to allo
Prevádzka vlastného e-mailového servera môže byť celkom obohacujúca. Máte na starosti svoje údaje. Umožňuje vám tiež väčšiu flexibilitu pri možnostiach doručenia. Existuje však niekoľko výziev. Riskujete, že váš server bude ohrozený zraniteľnosťami, ako aj tým, že sa váš server stane potenciálnym zdrojom pre spamerov.
S tým preč, začnime prevádzkovať vlastný poštový server.
Na inštaláciu sú potrebné tri časti softvéru, ktoré nie sú súčasťou základného systému FreeBSD:
OpenSMTPd je agent prenosu pošty (MTA) a agent doručovania pošty (MDA). To znamená, že dokáže cez SMTP
protokol komunikovať s ostatnými poštovými servermi a zabezpečuje aj doručovanie pošty do schránok jednotlivých používateľov. OpenSMTPd nastavíme tak, aby mohol komunikovať s externými servermi (filtrovaný cez spam) a doručovať poštu lokálnym používateľom, ako aj doručovať lokálnu poštu od používateľa k používateľovi.
Dovecot je MDA, ktorý číta lokálne poštové schránky a poskytuje ich používateľom cez IMAP alebo POP3. Na doručenie tohto obsahu použije poštové schránky miestnych používateľov.
Spamd je služba filtrovania pošty. Môžeme preposielať poštu cez spam a bude filtrovať poštu na základe rôznych zoznamov zakázaných položiek, bielych zoznamov a greylistov.
Všeobecná myšlienka tohto poštového servera vyžaduje niekoľko rôznych ciest:
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 návode budeme používať FreeBSD verziu PF OpenBSD pre náš firewall. Môžete tiež použiť ipfw
, kde je konfigurácia veľmi podobná.
Poznámka: Vultr štandardne blokuje port 25, ktorý všade používajú servery SMTP. Ak chcete prevádzkovať plne funkčný e-mailový server, budete musieť tento port otvoriť.
Najprv musíme nainštalovať potrebné programy.
Za predpokladu, že používate ako používateľ s nastaveným sudo prístupom, môžeme spustiť nasledujúce príkazy. Budú sa líšiť v závislosti od toho, či používate porty alebo balíky.
Ak nepotrebujete špecifickú funkcionalitu zabudovanú do týchto nástrojov, odporúča sa inštalácia prostredníctvom balíkov. Je to jednoduchšie, vyžaduje menej času a zdrojov servera a poskytuje intuitívne a užívateľsky prívetivé rozhranie.
sudo pkg install opensmtpd dovecot spamd
Nasledujúce make
príkazy vám poskytnú veľa možností kompilácie, predvolené nastavenia budú fungovať dobre. Nemeňte ich, pokiaľ presne neviete, čo robí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 musieť pridať nasledujúce riadky /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"
Na konfiguráciu PF môžeme vytvoriť 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á konfigurácia PF. Je to pomerne jednoduché, ale je potrebné vysvetliť aj niekoľko vtipov.
Najprv definujeme našu $ext_if
premennú, ktorú naše vtnet0
zariadenie použije neskôr. Tiež definujeme neplatné IP adresy, ktoré by mali byť vynechané na externom rozhraní.
We also define two tables, spamd
and spamd-white
- these two tables are created by spamd in it's default configuration. As well, we define a table named webmail
which we will use to allow some major webmail providers through.
To view a table, you can use the command pfctl -t tablename -T show
to list the elements in a table.
We set a few PF rules: skip processing on the local interface, enable statistics on the external interface and scrub incoming packets.
Next is one of the more important parts, where we manage sending our traffic through to spamd or OpenSMTPd.
First up is a redirect rule (note the syntax here, FreeBSD 11 uses the older style PF syntax (pre-OpenBSD 4.6) so the syntax may seem odd. If we receive anything on smtp from a host listed in the spamd
table or not listed in the spamd-white
table, we redirect the connection through to the spamd daemon, which deals with these connections. The next three rules are passthrough rules so that we can actually receive mail. We pass through messages from the IPs listed in the spamd-white
and the webmail
tables straight through to OpenSMTPd. Also, we accept messages on the submission port (587
).
Then there's a few housekeeping rules to set our default policy, and accept SSH and ICMP messages.
We then pass IMAP and POP3 on our external interface in order to access Dovecot.
Lastly we allow all outgoing traffic. If you wanted to add extra security, you could limit the ports you pass, but for a single-use server it's not a problem to pass everything.
Start PF:
sudo service pf start
Now that we have our firewall setup, we can move on to our mail server configuration.
OpenSMTPd has a very simple, and easy-to-read configuration syntax. An entire working configuration can fit into 14 lines, as you can see below:
#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
Firstly, we again define our external interface, as well as a few tables, aliases and domains. Then we move on to the SSL key and certificate for any domains we want to handle mail under.
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.
One problem with the greylisting approach is that large mail services will often send mail out through one of many different spools, and you aren't guaranteed to get the same server sending the message every time. One solution to this is to whitelist the IP ranges used by various webmail services. This is what the webmail table is used for in the PF configuration. This strategy can backfire if you include an IP address a spammer uses, but as long as you are careful with what ranges you put in the table you will be fine.
To add an email range to the webmail table, you can run the following command:
pfctl -t webmail -T add 192.0.2.0/24
If you want users to access their mail without logging in via SSH, you'll need an MDA that supports IMAP and/or POP3. A very popular program is Dovecot, with a fairly simple configuration and powerful features.
Môžeme skopírovať predvolenú konfiguráciu:
cd /usr/local/etc/dovecot
cp -R example-config/* ./
Konfigurácia sa skladá z niekoľkých rôznych súborov. Ak chcete vidieť rozdiely medzi vašou konfiguráciou a predvolenými nastaveniami holubníka, spustite príkaz nižšie:
sudo doveconf -n
Nasleduje jednoduchá a fungujúca konfigurácia:
# 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äčšina konfiguračných súborov bude in conf.d
Dôležité sú 10-auth.conf
, 10-mail.conf
, a 10-ssl.conf
.
Môžete nakonfigurovať rôzne poštové schránky, ktoré používate v 15-mailboxes.conf
. To, čo vidíte vyššie, je dobrá konfigurácia pre mnoho systémov, ale váš počet najazdených kilometrov sa môže líšiť. Odporúča sa, aby ste sa s tým pohrali s čo najväčším počtom rôznych klientov.
Väčšina predvolených nastavení bude správna. Ak chcete na autentifikáciu použiť používateľov systému, budete musieť upraviť 10-auth.conf
.
Odkomentujte nasledujúci riadok:
!include auth-system.conf.ext
Musíme vygenerovať parametre Diffie-Hellman:
sudo nohup openssl dhparam -out /usr/local/etc/dovecot/dh.pem
Poznámka: Spustenie bude trvať dlho. Oveľa dlhšie, než by ste čakali.
Teraz môžeme spustiť Dovecot:
sudo service dovecot start
V tomto bode máme funkčný, bezpečný a relatívne bez spamový poštový server.
Niektoré ďalšie veci, na ktoré sa odtiaľto môžete pozrieť, sú používanie SpamAssassinu na heuristické odstránenie spamu, ako aj nájdenie ďalších zoznamov zakázaných položiek nevyžiadanej pošty zverejnených zdrojmi, ktorým dôverujete.
Using a Different System? Tiny Tiny RSS Reader is a free and open source self-hosted web-based news feed (RSS/Atom) reader and aggregator, designed to allo
Používate iný systém? Wiki.js je bezplatná a open source moderná wiki aplikácia postavená na Node.js, MongoDB, Git a Markdown. Zdrojový kód Wiki.js je verejný
Používate iný systém? Pagekit 1.0 CMS je krásny, modulárny, rozšíriteľný a ľahký, bezplatný a open source systém na správu obsahu (CMS) s
Používate iný systém? MODX Revolution je rýchly, flexibilný, škálovateľný, open source podnikový systém správy obsahu (CMS) napísaný v PHP. To i
Tento článok vás prevedie nastavením OpenBSD 5.5 (64-bit) na KVM s Vultr VPS. Krok 1. Prihláste sa do ovládacieho panela Vultr. Krok 2. Kliknite na DEPLOY
Používate iný systém? osTicket je open-source systém podpory zákazníkov. Zdrojový kód osTicket je verejne hosťovaný na Github. V tomto návode
Používate iný systém? Flarum je bezplatný a otvorený softvér fóra novej generácie, vďaka ktorému je online diskusia zábavná. Zdrojový kód Flarum je hostovaný o
Používate iný systém? TLS 1.3 je verzia protokolu Transport Layer Security (TLS), ktorý bol publikovaný v roku 2018 ako navrhovaný štandard v RFC 8446.
Úvod WordPress je dominantný redakčný systém na internete. Poháňa všetko od blogov až po zložité webové stránky s dynamickým obsahom
Používate iný systém? Subrion 4.1 CMS je výkonný a flexibilný open source systém na správu obsahu (CMS), ktorý prináša intuitívny a prehľadný obsah
Tento tutoriál vám ukáže, ako nakonfigurovať službu DNS, ktorá sa ľahko udržiava, ľahko konfiguruje a je vo všeobecnosti bezpečnejšia ako klasický BIN
Zásobník FEMP, ktorý je porovnateľný so zásobníkom LEMP v systéme Linux, je kolekcia softvéru s otvoreným zdrojovým kódom, ktorý sa zvyčajne inštaluje spoločne, aby umožnil FreeBS.
MongoDB je prvotriedna databáza NoSQL, ktorá sa často používa v novších webových aplikáciách. Poskytuje vysokovýkonné dotazy, zdieľanie a replikáciu
Používate iný systém? Monica je open source systém riadenia osobných vzťahov. Predstavte si to ako CRM (populárny nástroj používaný predajnými tímami v th
Úvod Tento tutoriál demonštruje OpenBSD ako riešenie pre elektronický obchod využívajúce PrestaShop a Apache. Vyžaduje sa Apache, pretože PrestaShop má zložité UR
Používate iný systém? Fork je open source CMS napísaný v PHP. Zdrojový kód Forks je hostený na GitHub. Táto príručka vám ukáže, ako nainštalovať Fork CM
Používate iný systém? Directus 6.4 CMS je výkonný a flexibilný, bezplatný a open source systém správy obsahu bez hlavy (CMS), ktorý poskytuje vývojárom
Servery VPS sú často cieľom útočníkov. Bežný typ útoku sa objavuje v systémových protokoloch ako stovky neoprávnených pokusov o prihlásenie cez ssh. Nastavenie
Úvod OpenBSD 5.6 predstavilo nového démona s názvom httpd, ktorý podporuje CGI (cez FastCGI) a TLS. Na inštaláciu nového http nie je potrebná žiadna ďalšia práca
Tento tutoriál vám ukáže, ako nainštalovať groupware iRedMail na novú inštaláciu FreeBSD 10. Mali by ste použiť server s aspoň jedným gigabajtom o
Umelá inteligencia nie je v budúcnosti, je tu priamo v súčasnosti V tomto blogu si prečítajte, ako aplikácie umelej inteligencie ovplyvnili rôzne sektory.
Ste aj vy obeťou DDOS útokov a máte zmätok ohľadom metód prevencie? Ak chcete vyriešiť svoje otázky, prečítajte si tento článok.
Možno ste už počuli, že hackeri zarábajú veľa peňazí, ale premýšľali ste niekedy nad tým, ako môžu zarábať také peniaze? poďme diskutovať.
Chcete vidieť revolučné vynálezy od Google a ako tieto vynálezy zmenili život každého dnešného človeka? Potom si prečítajte na blogu a pozrite si vynálezy spoločnosti Google.
Koncept samoriadených áut vyraziť na cesty s pomocou umelej inteligencie je snom, ktorý máme už nejaký čas. Ale napriek niekoľkým prísľubom ich nikde nevidno. Prečítajte si tento blog a dozviete sa viac…
Ako sa veda vyvíja rýchlym tempom a preberá veľa nášho úsilia, zvyšuje sa aj riziko, že sa vystavíme nevysvetliteľnej singularite. Prečítajte si, čo pre nás môže znamenať singularita.
Spôsoby ukladania údajov sa môžu vyvíjať už od zrodu údajov. Tento blog sa zaoberá vývojom ukladania údajov na základe infografiky.
Prečítajte si blog, aby ste čo najjednoduchším spôsobom spoznali rôzne vrstvy architektúry veľkých dát a ich funkcie.
V tomto digitálnom svete sa inteligentné domáce zariadenia stali kľúčovou súčasťou života. Tu je niekoľko úžasných výhod inteligentných domácich zariadení o tom, ako robia náš život, ktorý stojí za to žiť, a ktorý zjednodušujú.
Spoločnosť Apple nedávno vydala doplnkovú aktualizáciu macOS Catalina 10.15.4 na opravu problémov, ale zdá sa, že táto aktualizácia spôsobuje ďalšie problémy, ktoré vedú k blokovaniu počítačov Mac. Prečítajte si tento článok a dozviete sa viac