Hur man installerar Tiny Tiny RSS Reader på en FreeBSD 11 FAMP VPS
Använder du ett annat system? Tiny Tiny RSS Reader är en gratis och öppen källkod, webbaserat nyhetsflöde (RSS/Atom) läsare och aggregator, utformad för att
Att driva din egen e-postserver kan vara ganska givande. Du är ansvarig för dina uppgifter. Det ger dig också mer flexibilitet med dina leveransalternativ. Det finns dock några utmaningar. Du riskerar att öppna din server för sårbarheter, samt att göra din server till ett potentiellt relä för spammare att använda.
Med det ur vägen, låt oss börja köra vår egen e-postserver.
Det finns tre nödvändiga programvaror att installera som inte ingår i FreeBSD-bassystemet:
OpenSMTPd är en postöverföringsagent (MTA) och postleveransagent (MDA). Det innebär att den kan kommunicera med andra e-postservrar över SMTP
protokollet, och den hanterar även leverans av post till de enskilda användarnas brevlådor. Vi kommer att ställa in OpenSMTPd så att den kan kommunicera med externa servrar (filtrerad genom spamd) och leverera e-post till lokala användare, samt leverera lokal e-post från användare till användare.
Dovecot är en MDA som läser lokala brevlådor och serverar dem över IMAP eller POP3 till användarna. Den kommer att använda de lokala användarnas postlådor för att visa detta innehåll.
Spamd är en e-postfiltreringstjänst. Vi kan vidarebefordra e-post via spamd, och det kommer att filtrera e-post baserat på en mängd svartlistor, vitlistor och en grålista.
Den allmänna idén för den här e-postservern kräver några olika sökvägar:
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)
För denna handledning kommer vi att använda FreeBSD-versionen av OpenBSDs PF för vår brandvägg. Du kan också använda ipfw
, där konfigurationen är väldigt lik.
Obs: Vultr, som standard, blockerar port 25, som används av SMTP-servrar överallt. Om du vill köra en fullt fungerande e-postserver måste du öppna den porten.
Först måste vi installera de nödvändiga programmen.
Förutsatt att du kör som användare med sudo-åtkomstinställning, kan vi köra följande kommandon. De kommer att variera beroende på om du använder portar eller paket.
Om du inte behöver specifik funktionalitet inbyggd i dessa verktyg, rekommenderas det att installera via paket. Det är enklare, tar mindre servertid och resurser och ger ett intuitivt, användarvänligt gränssnitt.
sudo pkg install opensmtpd dovecot spamd
Följande make
kommandon ger dig massor av kompileringsalternativ, standardinställningarna kommer att fungera bra. Ändra inte dessa om du inte vet exakt vad du gör.
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
Vi kommer att behöva lägga till följande rader till /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"
För att konfigurera PF kan vi skapa vår /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
Detta är en fungerande PF-konfiguration. Det är relativt enkelt, men det finns några egenheter att förklara också.
För det första definierar vi vår $ext_if
variabel för vår vtnet0
enhet att använda senare. Vi definierar också ogiltiga IP-adresser som ska släppas på det externa gränssnittet.
Vi definierar också två tabeller, spamd
och spamd-white
- dessa två tabeller skapas av spamd i dess standardkonfiguration. Vi definierar också en tabell som heter webmail
som vi kommer att använda för att tillåta några större webbmailleverantörer.
För att visa en tabell kan du använda kommandot för pfctl -t tablename -T show
att lista elementen i en tabell.
Vi sätter några PF-regler: hoppa över bearbetning på det lokala gränssnittet, aktivera statistik på det externa gränssnittet och skrubba inkommande paket.
Nästa är en av de viktigare delarna, där vi hanterar att skicka vår trafik till spamd eller OpenSMTPd.
Först ut är en omdirigeringsregel (observera syntaxen här, FreeBSD 11 använder den äldre stilen PF-syntax (pre-OpenBSD 4.6) så syntaxen kan verka udda. Om vi får något på smtp från en värd som listas i spamd
tabellen eller inte är listad i den spamd-white
tabellen, omdirigera vi anslutningen fram till spamd demonen, som behandlar dessa anslutningar. de kommande tre reglerna är genomströmning regler så att vi faktiskt kan ta emot e-post. vi passerar genom meddelanden från IP som anges i spamd-white
och webmail
tabeller rakt igenom till OpenSMTPd. Dessutom accepterar vi meddelanden på inlämningsporten ( 587
).
Sedan finns det några hushållsregler för att ställa in vår standardpolicy och acceptera SSH- och ICMP-meddelanden.
Vi skickar sedan IMAP och POP3 på vårt externa gränssnitt för att komma åt Dovecot.
Slutligen tillåter vi all utgående trafik. Om du ville lägga till extra säkerhet kunde du begränsa antalet portar du skickar, men för en engångsserver är det inga problem att skicka allt.
Starta PF:
sudo service pf start
Nu när vi har vår brandväggsinstallation kan vi gå vidare till vår e-postserverkonfiguration.
OpenSMTPd har en mycket enkel och lättläst konfigurationssyntax. En hel fungerande konfiguration kan passa in i 14 rader, som du kan se nedan:
#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
Först definierar vi återigen vårt externa gränssnitt, samt några tabeller, alias och domäner. Sedan går vi vidare till SSL-nyckeln och certifikatet för eventuella domäner vi vill hantera post under.
I nästa avsnitt definierar vi de gränssnitt och portar vi vill lyssna på. För det första lyssnar vi på localhost för vår mail.example.com
domän, för eventuella lokala anslutningar. Sedan lyssnar vi efter våra spamdfiltrerade meddelanden och inskickade meddelanden på det externa gränssnittet. Slutligen lyssnar vi efter inlämningar, dessa händer i hamn 587
och vi kräver att de autentiseras av säkerhetsskäl.
Till sist är våra accept
inställningar. Vi accepterar alla meddelanden för någon av våra domäner som definieras i vår domains
tabell för alias i vår aliases
tabell, för att leverera till deras hemkatalog i maildir
formatet. Sedan accepterar vi alla lokala anslutningar för lokala brevlådor och vidarebefordrar våra meddelanden, så att vi kan skicka e-post. Slutligen accepterar vi våra inskickade meddelanden till relä. Om vi inte krävde autentisering för vår inlämningsport, skulle detta vara en stor säkerhetsrisk. Detta skulle låta vem som helst använda vår server som ett spamrelä.
FreeBSD levereras med en standardaliasfil /etc/mail/aliases
i följande format:
vuser1: user1
vuser2: user1
vuser3: user1
vuser4: user2
Detta definierar de olika brevlådorna och vart vi vill vidarebefordra meddelanden som skickas till dessa definierade brevlådor. Vi kan antingen definiera våra användare som lokala systemanvändare eller externa brevlådor att vidarebefordra till. Standard FreeBSD-filen är ganska beskrivande så du kan referera till den som referens.
FreeBSD tillhandahåller ingen standarddomänfil, men det här är otroligt enkelt:
# Domains
example.com
mail.example.com
smtp.example.com
Detta är bara en vanlig textfil med varje domän du vill lyssna på på en ny rad. Du kan göra en kommentar med hjälp av #
symbolen. Den här filen finns helt enkelt så att du kan använda färre rader med konfiguration.
Det finns två sätt att kunna säkra din kommunikation med din e-postserver, självsignerade och signerade certifikat. Det är säkert möjligt att självsignera dina certifikat, men tjänster som Let's Encrypt ger gratis och otroligt lättanvänd signering.
Först måste vi installera certbot-programmet.
sudo pkg install py-certbot
Alternativt kan den installeras med portar:
cd /usr/ports/security/py-certbot
make install
make clean
Sedan, för att få ditt certifikat, måste du se till att du har öppnat porten 80
på ditt externa gränssnitt. Lägg till följande rader någonstans i dina filtreringsregler i /usr/local/etc/pf.conf
:
pass quick on $ext_if from any to any port http
Kör sedan för pfctl -f /usr/local/etc/pf.conf
att ladda om regeluppsättningen.
Sedan kan du köra kommandot för alla domäner som du vill skaffa ett certifikat för:
certbot certonly --standalone -d mail.example.com
Det rekommenderas att ställa in en crontab-post som körs en certbot renew
gång var sjätte månad för att säkerställa att dina certifikat inte förfaller.
Sedan kan du för varje relevant domän ändra raderna så att de pekar på rätt nyckelfil:
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"
Redigera värdepapper:
sudo chmod 700 /usr/local/etc/letsencrypt/archive/mail.example.com/*
Obs: Du måste göra detta för varje originalnyckelfil, annars öppnar OpenSMTPd dem inte.
Nu kan vi starta tjänsten:
sudo service smtpd start
Här använder vi OpenBSDs spamd-demon för att minska mängden skräppost vi får från internet. I huvudsak filtrerar detta bort meddelanden från IP-adresser som är kända som dåliga från olika skräppostkällor, såväl som (som standard) "grålista" inkommande anslutningar. Spamd försöker också slösa bort spammarens tid genom att "stamla" svartlistade och grålistade anslutningar, vilket innebär att det sprider sitt svar över flera sekunder vilket tvingar klienten att vara öppen längre än vanligt.
Grålistning av en anslutning görs när en ny IP-adress ansluts som inte finns på någon svartlista eller vitlista. När den nya adressen ansluter släpper spamd meddelandet med ett harmlöst felmeddelande och lägger sedan till det i en tillfällig lista. Eftersom spammare får betalt för levererade meddelanden kommer de inte att försöka igen på ett fel, medan en legitim tjänst kommer att försöka igen relativt snart.
Du måste köra följande för att montera fdescfs
:
mount -t fdescfs null /dev/fd
Då måste du lägga till denna rad till /etc/fstab
:
fdescfs /dev/fd fdescfs rw 0 0
Standardkonfigurationsfilen (finns i /usr/local/etc/spamd/spamd.conf.sample
) kommer att fungera bra. Du kan redigera den för att lägga till nya källor eller ändra källorna du använder:
sudo cp /usr/local/etc/spamd/spamd.conf.sample /usr/local/etc/spamd/spamd.conf
Vi kan starta tjänsten med följande:
sudo service obspamd start
Vid denna tidpunkt är spamd inställd.
Ett problem med grålistningsmetoden är att stora e-posttjänster ofta skickar e-post via en av många olika spooler, och du är inte garanterad att få samma server som skickar meddelandet varje gång. En lösning på detta är att vitlista de IP-intervall som används av olika webbmailtjänster. Detta är vad webbmailtabellen används för i PF-konfigurationen. Den här strategin kan slå tillbaka om du inkluderar en IP-adress som en spammare använder, men så länge du är försiktig med vilka intervall du lägger i tabellen kommer du att klara det.
För att lägga till ett e-postintervall till webbmailtabellen kan du köra följande kommando:
pfctl -t webmail -T add 192.0.2.0/24
Om du vill att användare ska komma åt sin e-post utan att logga in via SSH, behöver du en MDA som stöder IMAP och/eller POP3. Ett mycket populärt program är Dovecot, med en ganska enkel konfiguration och kraftfulla funktioner.
Vi kan kopiera över standardkonfigurationen:
cd /usr/local/etc/dovecot
cp -R example-config/* ./
Konfigurationen består av en hel del olika filer. För att se skillnaderna mellan din konfiguration och standardinställningarna för dovecot, kör kommandot nedan:
sudo doveconf -n
Följande är en enkel, fungerande konfiguration:
# 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
}
De flesta konfigurationsfiler kommer att finnas i conf.d
De viktiga är 10-auth.conf
, 10-mail.conf
, och 10-ssl.conf
.
Du kan konfigurera de olika postlådorna du använder i 15-mailboxes.conf
. Det du ser ovan är en bra konfiguration för många system, men din körsträcka kan variera. Det rekommenderas att du leker med detta med så många olika klienter du kan.
De flesta standardinställningar kommer att vara korrekta. Om du vill använda systemanvändarna för att autentisera, måste du redigera 10-auth.conf
.
Avkommentera följande rad:
!inkludera auth-system.conf.ext
Vi måste generera Diffie-Hellman-parametrar:
sudo nohup openssl dhparam -out /usr/local/etc/dovecot/dh.pem
Obs: Detta kommer att ta lång tid att köra. Mycket längre än du kan förvänta dig.
Vi kan nu starta Dovecot:
sudo service dovecot start
Vid det här laget har vi en fungerande, säker och relativt spamfri e-postserver.
Några fler saker att titta på härifrån är att använda SpamAssassin för att heuristiskt bli av med spam, samt att hitta fler spam-svarta listor som lagts ut av källor du litar på.
Använder du ett annat system? Tiny Tiny RSS Reader är en gratis och öppen källkod, webbaserat nyhetsflöde (RSS/Atom) läsare och aggregator, utformad för att
Använder du ett annat system? Wiki.js är en gratis och öppen källkod, modern wiki-app byggd på Node.js, MongoDB, Git och Markdown. Wiki.js källkod är offentlig
Använder du ett annat system? Pagekit 1.0 CMS är ett vackert, modulärt, utbyggbart och lätt, gratis och öppen källkod Content Management System (CMS) med
Använder du ett annat system? MODX Revolution är ett snabbt, flexibelt, skalbart, öppen källkod, Enterprise-grade Content Management System (CMS) skrivet i PHP. Det jag
Den här artikeln leder dig genom att ställa in OpenBSD 5.5 (64-bitars) på KVM med en Vultr VPS. Steg 1. Logga in på Vultr kontrollpanelen. Steg 2. Klicka på DEPLOY
Använder du ett annat system? osTicket är ett biljettsystem för kundsupport med öppen källkod. osTicket källkod är offentligt värd på Github. I denna handledning
Använder du ett annat system? Flarum är en gratis och öppen källkod nästa generations forummjukvara som gör diskussioner online roliga. Flarum källkod är värd o
Använder du ett annat system? TLS 1.3 är en version av TLS-protokollet (Transport Layer Security) som publicerades 2018 som en föreslagen standard i RFC 8446
Inledning WordPress är det dominerande innehållshanteringssystemet på internet. Det driver allt från bloggar till komplexa webbplatser med dynamiskt innehåll
Använder du ett annat system? Subrion 4.1 CMS är ett kraftfullt och flexibelt innehållshanteringssystem (CMS) med öppen källkod som ger ett intuitivt och tydligt innehåll
Denna handledning visar dig hur du konfigurerar en DNS-tjänst som är lätt att underhålla, lätt att konfigurera och som i allmänhet är säkrare än den klassiska BIN
En FEMP-stack, som är jämförbar med en LEMP-stack på Linux, är en samling programvara med öppen källkod som vanligtvis installeras tillsammans för att möjliggöra en FreeBS
MongoDB är en NoSQL-databas i världsklass som ofta används i nyare webbapplikationer. Det ger högpresterande frågor, skärning och replikering
Använder du ett annat system? Monica är ett personligt relationshanteringssystem med öppen källkod. Se det som ett CRM (ett populärt verktyg som används av säljteam i th
Introduktion Denna handledning visar OpenBSD som en e-handelslösning som använder PrestaShop och Apache. Apache krävs eftersom PrestaShop har komplex UR
Använder du ett annat system? Fork är ett CMS med öppen källkod skrivet i PHP. Forks källkod finns på GitHub. Den här guiden visar hur du installerar Fork CM
Använder du ett annat system? Directus 6.4 CMS är ett kraftfullt och flexibelt, gratis och öppen källkod Headless Content Management System (CMS) som tillhandahåller utvecklare
VPS-servrar riktas ofta mot inkräktare. En vanlig typ av attack dyker upp i systemloggar som hundratals obehöriga ssh-inloggningsförsök. Installation
Inledning OpenBSD 5.6 introducerade en ny demon som heter httpd, som stöder CGI (via FastCGI) och TLS. Inget ytterligare arbete behövs för att installera den nya http
Denna handledning kommer att visa dig hur du installerar groupware iRedMail på en ny installation av FreeBSD 10. Du bör använda en server med minst en gigabyte o
Artificiell intelligens är inte i framtiden, det är här i nuet I den här bloggen Läs hur Artificiell intelligens-applikationer har påverkat olika sektorer.
Är du också ett offer för DDOS-attacker och förvirrad över de förebyggande metoderna? Läs den här artikeln för att lösa dina frågor.
Du kanske har hört att hackare tjänar mycket pengar, men har du någonsin undrat hur de tjänar den typen av pengar? låt oss diskutera.
Vill du se revolutionerande uppfinningar av Google och hur dessa uppfinningar förändrade livet för varje människa idag? Läs sedan till bloggen för att se uppfinningar av Google.
Konceptet med att självkörande bilar ska ut på vägarna med hjälp av artificiell intelligens är en dröm vi har ett tag nu. Men trots flera löften finns de ingenstans att se. Läs den här bloggen för att lära dig mer...
När vetenskapen utvecklas i snabb takt och tar över en hel del av våra ansträngningar, ökar också riskerna för att utsätta oss för en oförklarlig singularitet. Läs, vad singularitet kan betyda för oss.
Lagringsmetoderna för data har utvecklats kan vara sedan födelsen av data. Den här bloggen tar upp utvecklingen av datalagring på basis av en infografik.
Läs bloggen för att känna till olika lager i Big Data Architecture och deras funktionaliteter på enklaste sätt.
I denna digitala värld har smarta hemenheter blivit en avgörande del av livet. Här är några fantastiska fördelar med smarta hemenheter om hur de gör vårt liv värt att leva och enklare.
Nyligen släppte Apple macOS Catalina 10.15.4, en tilläggsuppdatering för att åtgärda problem, men det verkar som om uppdateringen orsakar fler problem som leder till att mac-datorer blir murade. Läs den här artikeln för att lära dig mer