A Tiny Tiny RSS Reader telepítése FreeBSD 11 FAMP VPS-re
Más rendszert használ? A Tiny Tiny RSS Reader egy ingyenes és nyílt forráskódú, saját üzemeltetésű webalapú hírfolyam (RSS/Atom) olvasó és aggregátor, amelyet úgy terveztek, hogy
Saját e-mail szerver futtatása nagyon kifizetődő lehet. Ön felelős az adataiért. Ezenkívül nagyobb rugalmasságot tesz lehetővé a szállítási lehetőségek tekintetében. Van azonban néhány kihívás. Fennáll a veszélye annak, hogy a szervert sebezhető pontok elé tárja, és a szerver potenciális továbbítóvá válik a spammerek számára.
Ha ez kimaradt, kezdjük saját levelezőszerverünk működtetését.
Három olyan szükséges szoftvert kell telepíteni, amelyek nem szerepelnek a FreeBSD alaprendszerében:
Az OpenSMTPd egy levéltovábbítási ügynök (MTA) és levélkézbesítési ügynök (MDA). Ez azt jelenti, hogy a SMTP
protokollon keresztül tud kommunikálni más levelezőszerverekkel , és kezeli a levelek eljuttatását az egyes felhasználók postafiókjába. Az OpenSMTPd-t úgy állítjuk be, hogy kommunikálni tudjon külső szerverekkel (spamd-n keresztül szűrve), és leveleket kézbesítsen a helyi felhasználóknak, valamint helyi leveleket kézbesítsen felhasználóról felhasználóra.
A Dovecot egy MDA, amely beolvassa a helyi postafiókokat, és IMAP-on vagy POP3-on keresztül kiszolgálja azokat a felhasználóknak. A tartalom a helyi felhasználók postafiókját fogja használni.
A Spamd egy levélszűrő szolgáltatás. A leveleket a spamd-n keresztül továbbíthatjuk, és a leveleket különféle feketelista, fehérlista és szürkelista alapján szűri.
Ennek a levelezőszervernek az általános ötlete néhány különböző útvonalat igényel:
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)
Ebben az oktatóanyagban az OpenBSD PF FreeBSD verzióját fogjuk használni tűzfalunkhoz. Használhatja ipfw
a -t is , ahol a konfiguráció nagyon hasonló.
Megjegyzés: A Vultr alapértelmezés szerint blokkolja a 25-ös portot, amelyet az SMTP-kiszolgálók mindenhol használnak. Ha egy teljesen működőképes e-mail szervert szeretne futtatni, akkor ezt a portot meg kell nyitnia.
Először is telepítenünk kell a szükséges programokat.
Feltéve, hogy felhasználóként fut, és be van állítva a sudo hozzáférés, a következő parancsokat tudjuk futtatni. Ezek attól függően változnak, hogy portokat vagy csomagokat használunk.
Hacsak nincs szüksége speciális funkciókra ezekbe a segédprogramokba, ajánlatos csomagokon keresztül telepíteni. Egyszerűbb, kevesebb szerveridőt és erőforrást igényel, és intuitív, felhasználóbarát felületet biztosít.
sudo pkg install opensmtpd dovecot spamd
A következő make
parancsok sok fordítási opciót adnak, az alapértelmezett beállítások jól működnek. Ne változtassa meg ezeket, hacsak nem tudja pontosan, mit csinál.
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
A következő sorokat kell hozzáadnunk ehhez /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"
A PF konfigurálásához létrehozhatjuk a következőt /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
Ez egy működő PF konfiguráció. Viszonylag egyszerű, de néhány furcsaságot is meg kell magyarázni.
Először is definiáljuk a $ext_if
változónkat az vtnet0
eszközünkhöz, amelyet később használunk. Érvénytelen IP-címeket is meghatározunk, amelyeket el kell dobni a külső interfészen.
Két táblát is meghatározunk, spamd
és spamd-white
- ezt a két táblát a spamd hozza létre az alapértelmezett konfigurációjában. Ezenkívül meghatározunk egy nevű táblázatot, webmail
amelyet arra fogunk használni, hogy néhány nagyobb webmail szolgáltatót átengedjünk.
Táblázat megtekintéséhez használhatja a parancsot pfctl -t tablename -T show
a táblázat elemeinek listázásához.
Beállítunk néhány PF-szabályt: kihagyjuk a feldolgozást a helyi interfészen, engedélyezzük a statisztikákat a külső felületen, és megtisztítjuk a bejövő csomagokat.
Következő az egyik fontosabb rész, ahol kezeljük a forgalom spamd vagy OpenSMTPd továbbítását.
Először is egy átirányítási szabály (figyelje meg a szintaxist, a FreeBSD 11 a régebbi stílusú PF szintaxist használja (OpenBSD 4.6 előtt), így a szintaxis furcsának tűnhet. Ha bármit is kapunk smtp-n a spamd
táblázatban felsorolt vagy a táblázatban nem szereplő gazdagéptől a spamd-white
táblán keresztül átirányítjuk a kapcsolatot a spamd démonra, amely ezekkel a kapcsolatokkal foglalkozik. A következő három szabály átadási szabály, hogy ténylegesen fogadhassuk a leveleket. A spamd-white
és a webmail
táblázatokban felsorolt IP-címekről érkező üzeneteket közvetlenül a OpenSMTPd. Ezenkívül elfogadunk üzeneteket a benyújtási porton ( 587
).
Aztán van néhány háztartási szabály az alapértelmezett házirend beállításához, valamint az SSH- és ICMP-üzenetek elfogadásához.
Ezután átadjuk az IMAP-ot és a POP3-at a külső felületünkön, hogy elérjük a Dovecotot.
Végül engedélyezzük az összes kimenő forgalmat. Ha extra biztonságot szeretne adni, korlátozhatja az átengedett portokat, de egy egyszer használatos szervernél nem probléma, hogy mindent átad.
PF indítása:
sudo service pf start
Most, hogy megvan a tűzfal beállítása, továbbléphetünk a levelezőszerverünk konfigurációjára.
Az OpenSMTPd nagyon egyszerű és könnyen olvasható konfigurációs szintaxissal rendelkezik. Egy teljes működő konfiguráció 14 sorba fér el, amint az alábbiakban látható:
#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
Először ismét meghatározzuk a külső felületünket, valamint néhány táblát, álnevet és tartományt. Ezután áttérünk az SSL-kulcsra és tanúsítványra minden olyan domainhez, amelyen a leveleket kezelni szeretnénk.
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.
Átmásolhatjuk az alapértelmezett konfigurációt:
cd /usr/local/etc/dovecot
cp -R example-config/* ./
A konfiguráció jó néhány különböző fájlból áll. A konfiguráció és a dovecot alapértelmezett beállításai közötti különbségek megtekintéséhez futtassa az alábbi parancsot:
sudo doveconf -n
A következő egy egyszerű, működő konfiguráció:
# 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
}
A legtöbb konfigurációs fájl benne lesz conf.d
A legfontosabbak a 10-auth.conf
, 10-mail.conf
, és 10-ssl.conf
.
Beállíthatja a különböző postafiókokat, amelyeket itt használ 15-mailboxes.conf
. A fent látható jó konfiguráció sok rendszerhez, de a futásteljesítmény változhat. Javasoljuk, hogy játsszon ezzel a lehetőséggel a lehető legtöbb ügyféllel.
A legtöbb alapértelmezett beállítás megfelelő lesz. Ha a rendszerfelhasználókat szeretné használni a hitelesítéshez, módosítania kell a 10-auth.conf
.
Törölje a következő sor megjegyzését:
!include auth-system.conf.ext
Diffie-Hellman paramétereket kell generálnunk:
sudo nohup openssl dhparam -out /usr/local/etc/dovecot/dh.pem
Megjegyzés: Ennek futtatása hosszú ideig tart. Sokkal tovább, mint amire számítottál.
Most már elindíthatjuk a Dovecot-ot:
sudo service dovecot start
Jelenleg egy működőképes, biztonságos és viszonylag spammentes levelezőszerverünk van.
Néhány további dolog, amit érdemes megvizsgálni innen, a SpamAssassin használata a levélszemét heurisztikus eltávolítására, valamint további, megbízható forrásokból kiadott spam feketelisták keresése.
Más rendszert használ? A Tiny Tiny RSS Reader egy ingyenes és nyílt forráskódú, saját üzemeltetésű webalapú hírfolyam (RSS/Atom) olvasó és aggregátor, amelyet úgy terveztek, hogy
Más rendszert használ? A Wiki.js egy ingyenes és nyílt forráskódú, modern wikialkalmazás, amely Node.js-re, MongoDB-re, Git-re és Markdownra épül. A Wiki.js forráskódja nyilvános
Más rendszert használ? A Pagekit 1.0 CMS egy gyönyörű, moduláris, bővíthető és könnyű, ingyenes és nyílt forráskódú tartalomkezelő rendszer (CMS)
Más rendszert használ? A MODX Revolution egy gyors, rugalmas, méretezhető, nyílt forráskódú, vállalati szintű tartalomkezelő rendszer (CMS), PHP nyelven írva. Ez i
Ez a cikk végigvezeti az OpenBSD 5.5 (64 bites) beállításán KVM-en Vultr VPS-sel. 1. lépés: Jelentkezzen be a Vultr vezérlőpultra. 2. lépés Kattintson a BEVEZETÉS gombra
Más rendszert használ? Az osTicket egy nyílt forráskódú ügyfélszolgálati jegyértékesítő rendszer. Az osTicket forráskódja nyilvánosan a Githubon található. Ebben az oktatóanyagban
Más rendszert használ? A Flarum egy ingyenes, nyílt forráskódú, következő generációs fórumszoftver, amely szórakoztatóvá teszi az online beszélgetést. A Flarum forráskód o
Más rendszert használ? A TLS 1.3 a Transport Layer Security (TLS) protokoll egyik változata, amelyet 2018-ban tettek közzé javasolt szabványként az RFC 8446-ban.
Bevezetés A WordPress a domináns tartalomkezelő rendszer az interneten. A blogoktól a dinamikus tartalommal rendelkező összetett webhelyekig mindent megtesz
Más rendszert használ? A Subrion 4.1 CMS egy hatékony és rugalmas nyílt forráskódú tartalomkezelő rendszer (CMS), amely intuitív és világos tartalmat biztosít.
Ez az oktatóanyag bemutatja, hogyan konfigurálhat olyan DNS-szolgáltatást, amely könnyen karbantartható, könnyen konfigurálható, és általában biztonságosabb, mint a klasszikus BIN.
A FEMP verem, amely összehasonlítható a Linux LEMP veremével, nyílt forráskódú szoftverek gyűjteménye, amelyeket általában együtt telepítenek a FreeBS engedélyezéséhez.
A MongoDB egy világszínvonalú NoSQL adatbázis, amelyet gyakran használnak újabb webes alkalmazásokban. Nagy teljesítményű lekérdezéseket, felosztást és replikációt biztosít
Más rendszert használ? A Monica egy nyílt forráskódú személyes kapcsolatkezelő rendszer. Tekintsd úgy, mint egy CRM-et (az értékesítési csapatok által használt népszerű eszköz a th
Bevezetés Ez az oktatóanyag bemutatja az OpenBSD-t mint e-kereskedelmi megoldást PrestaShop és Apache használatával. Az Apache szükséges, mert a PrestaShop összetett UR-vel rendelkezik
Más rendszert használ? A Fork egy PHP nyelven írt nyílt forráskódú CMS. A Forks forráskódja a GitHubon található. Ez az útmutató megmutatja, hogyan kell telepíteni a Fork CM-et
Más rendszert használ? A Directus 6.4 CMS egy hatékony és rugalmas, ingyenes és nyílt forráskódú fej nélküli tartalomkezelő rendszer (CMS), amely a fejlesztők számára
A VPS-szervereket gyakran támadják meg a behatolók. A támadások gyakori típusa több száz jogosulatlan ssh bejelentkezési kísérletként jelenik meg a rendszernaplókban. Felállítása
Bevezetés Az OpenBSD 5.6 bevezetett egy új httpd démont, amely támogatja a CGI-t (FastCGI-n keresztül) és a TLS-t. Nincs szükség további munkára az új http telepítéséhez
Ez az oktatóanyag megmutatja, hogyan telepítheti a csoportmunka iRedMail programot a FreeBSD 10 friss telepítésére. Használjon legalább egy gigabájtos kiszolgálót.
A mesterséges intelligencia nem a jövőben, hanem itt a jelenben. Ebben a blogban Olvassa el, hogyan hatott a mesterséges intelligencia alkalmazások különböző ágazatokra.
Ön is DDOS támadások áldozata, és tanácstalan a megelőzési módszereket illetően? Olvassa el ezt a cikket a kérdések megoldásához.
Talán hallottál már arról, hogy a hackerek sok pénzt keresnek, de elgondolkodtál már azon, hogyan kereshetnek ennyi pénzt? beszéljük meg.
Szeretné látni a Google forradalmi találmányait, és azt, hogy ezek a találmányok hogyan változtatták meg minden mai ember életét? Ezután olvassa el a blogot, és nézze meg a Google találmányait.
Az önvezető autók koncepciója, hogy mesterséges intelligencia segítségével kerüljenek az utakra, már egy ideje álmunk. De számos ígéret ellenére sehol sem látszanak. Olvassa el ezt a blogot, hogy többet megtudjon…
Ahogy a tudomány gyors ütemben fejlődik, átveszi erőfeszítéseink nagy részét, megnő annak a kockázata is, hogy alávetjük magunkat egy megmagyarázhatatlan szingularitásnak. Olvassa el, mit jelenthet számunkra a szingularitás.
Az adatok tárolási módjai az Adatok születése óta alakulhatnak. Ez a blog egy infografika alapján mutatja be az adattárolás fejlődését.
Olvassa el a blogot, hogy a legegyszerűbb módon ismerje meg a Big Data Architecture különböző rétegeit és azok funkcióit.
Ebben a digitálisan vezérelt világban az intelligens otthoni eszközök az élet döntő részévé váltak. Íme az intelligens otthoni eszközök néhány elképesztő előnye, hogyan teszik életünket érdemessé és egyszerűbbé.
Az Apple a közelmúltban kiadott egy kiegészítést a macOS Catalina 10.15.4-hez a problémák megoldására, de úgy tűnik, hogy a frissítés több problémát okoz, ami a Mac gépek blokkolásához vezet. További információért olvassa el ezt a cikket