Hvordan installere Tiny Tiny RSS-leser på en FreeBSD 11 FAMP VPS
Bruker du et annet system? Tiny Tiny RSS Reader er en gratis og åpen kildekode selvhostet nettbasert nyhetsfeed (RSS/Atom) leser og aggregator, designet for å allo
Å kjøre din egen e-postserver kan være ganske givende. Du er ansvarlig for dataene dine. Det gir deg også mer fleksibilitet med leveringsalternativene dine. Det er imidlertid noen utfordringer. Du risikerer å åpne serveren din for sårbarheter, i tillegg til å gjøre serveren din til et potensielt relé for spammere å bruke.
Med det ute av veien, la oss fortsette å kjøre vår egen e-postserver.
Det er tre nødvendige stykker programvare å installere som ikke er inkludert i FreeBSD-basesystemet:
OpenSMTPd er en postoverføringsagent (MTA) og postleveringsagent (MDA). Det betyr at den kan kommunisere med andre postservere over SMTP
protokollen, og den håndterer også levering av post til de enkelte brukernes postbokser. Vi vil sette opp OpenSMTPd slik at den kan kommunisere til eksterne servere (filtrert gjennom spamd) og levere e-post til lokale brukere, samt levere lokal e-post fra bruker til bruker.
Dovecot er en MDA som leser lokale postbokser og serverer dem over IMAP eller POP3 til brukerne. Den vil bruke de lokale brukernes postbokser for å vise dette innholdet.
Spamd er en e-postfiltreringstjeneste. Vi kan videresende e-post via spamd, og det vil filtrere e-post basert på en rekke svartelister, hvitelister og en gråliste.
Den generelle ideen for denne e-postserveren krever noen forskjellige baner:
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)
For denne opplæringen vil vi bruke FreeBSD-versjonen av OpenBSDs PF for brannmuren vår. Du kan også bruke ipfw
, der konfigurasjonen er veldig lik.
Merk: Vultr blokkerer som standard port 25, som brukes av SMTP-servere overalt. Hvis du vil kjøre en fullt funksjonell e-postserver, må du få den porten åpnet.
Først må vi installere de nødvendige programmene.
Forutsatt at du kjører som en bruker med sudo-tilgang satt opp, kan vi kjøre følgende kommandoer. De vil variere avhengig av om du bruker porter eller pakker.
Med mindre du trenger spesifikk funksjonalitet innebygd i disse verktøyene, anbefales det å installere via pakker. Det er enklere, tar mindre servertid og ressurser, og gir et intuitivt, brukervennlig grensesnitt.
sudo pkg install opensmtpd dovecot spamd
Følgende make
kommandoer vil gi deg mange kompileringsalternativer, standardinnstillingene vil fungere fint. Ikke endre disse med mindre du vet nøyaktig hva du gjø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 må legge til følgende linjer til /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"
For å konfigurere PF kan vi lage 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
Dette er en fungerende PF-konfigurasjon. Det er relativt enkelt, men det er noen særheter som også skal forklares.
For det første definerer vi $ext_if
variabelen vår som vtnet0
enheten vår skal bruke senere. Vi definerer også ugyldige IP-adresser som skal slippes på det eksterne grensesnittet.
Vi definerer også to tabeller, spamd
og spamd-white
- disse to tabellene er opprettet av spamd i standardkonfigurasjonen. I tillegg definerer vi en tabell med navn webmail
som vi vil bruke for å la noen store nettpostleverandører gå gjennom.
For å vise en tabell kan du bruke kommandoen pfctl -t tablename -T show
til å liste elementene i en tabell.
Vi setter noen PF-regler: hopp over behandling på det lokale grensesnittet, aktiver statistikk på det eksterne grensesnittet og skrubb innkommende pakker.
Neste er en av de viktigere delene, der vi klarer å sende trafikken vår til spamd eller OpenSMTPd.
Først ut er en omdirigeringsregel (merk syntaksen her, FreeBSD 11 bruker den eldre stilen PF-syntaks (pre-OpenBSD 4.6) så syntaksen kan virke rar. Hvis vi mottar noe på smtp fra en vert oppført i spamd
tabellen eller ikke oppført i den spamd-white
tabellen, omdirigere vi forbindelsen gjennom til spamd daemon, som tar for seg disse tilkoblingene. de neste tre reglene er gjennomgangs reglene slik at vi faktisk kan motta e-post. Vi passerer gjennom meldinger fra IP-adresser som er oppført i spamd-white
og webmail
tabeller rett gjennom til OpenSMTPd. Vi godtar også meldinger på innsendingsporten ( 587
).
Deretter er det noen få rengjøringsregler for å angi standardpolicyen vår og akseptere SSH- og ICMP-meldinger.
Vi sender deretter IMAP og POP3 på vårt eksterne grensesnitt for å få tilgang til Dovecot.
Til slutt tillater vi all utgående trafikk. Hvis du ville legge til ekstra sikkerhet, kunne du begrense portene du passerer, men for en engangsserver er det ikke noe problem å sende alt.
Start PF:
sudo service pf start
Nå som vi har brannmuroppsettet vårt, kan vi gå videre til e-postserverkonfigurasjonen.
OpenSMTPd har en veldig enkel og lettlest konfigurasjonssyntaks. En hel arbeidskonfigurasjon kan passe inn i 14 linjer, som du kan se nedenfor:
#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
For det første definerer vi igjen vårt eksterne grensesnitt, samt noen få tabeller, aliaser og domener. Deretter går vi videre til SSL-nøkkelen og sertifikatet for eventuelle domener vi ønsker å håndtere post 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.
Vi kan kopiere over standardkonfigurasjonen:
cd /usr/local/etc/dovecot
cp -R example-config/* ./
Konfigurasjonen består av ganske mange forskjellige filer. For å se forskjellene mellom konfigurasjonen din og standardverdiene for dueslag, kjør kommandoen nedenfor:
sudo doveconf -n
Følgende er en enkel, fungerende konfigurasjon:
# 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 fleste konfigurasjonsfiler vil være i conf.d
De viktigste er 10-auth.conf
, 10-mail.conf
, og 10-ssl.conf
.
Du kan konfigurere de forskjellige postboksene du bruker i 15-mailboxes.conf
. Det du ser ovenfor er en god konfigurasjon for mange systemer, men kjørelengden din kan variere. Det anbefales at du leker med dette med så mange forskjellige klienter du kan.
De fleste standardinnstillingene vil være riktige. Hvis du vil bruke systembrukerne til å autentisere, må du redigere 10-auth.conf
.
Fjern kommentaren til følgende linje:
!inkluder auth-system.conf.ext
Vi må generere Diffie-Hellman-parametere:
sudo nohup openssl dhparam -out /usr/local/etc/dovecot/dh.pem
Merk: Dette vil ta lang tid å kjøre. Mye lenger enn du kanskje forventer.
Vi kan nå starte Dovecot:
sudo service dovecot start
På dette tidspunktet har vi en funksjonell, sikker og relativt spamfri e-postserver.
Noen flere ting å se nærmere på herfra er å bruke SpamAssassin for å heuristisk bli kvitt spam, i tillegg til å finne flere spam-svartelister som er lagt ut av kilder du stoler på.
Bruker du et annet system? Tiny Tiny RSS Reader er en gratis og åpen kildekode selvhostet nettbasert nyhetsfeed (RSS/Atom) leser og aggregator, designet for å allo
Bruker du et annet system? Wiki.js er en gratis og åpen kildekode, moderne wiki-app bygget på Node.js, MongoDB, Git og Markdown. Wiki.js kildekode er offentlig
Bruker du et annet system? Pagekit 1.0 CMS er et vakkert, modulært, utvidbart og lett, gratis og åpen kildekode Content Management System (CMS) med
Bruker du et annet system? MODX Revolution er et raskt, fleksibelt, skalerbart, åpen kildekode, enterprise-grade Content Management System (CMS) skrevet i PHP. Det jeg
Denne artikkelen leder deg gjennom å sette opp OpenBSD 5.5 (64-bit) på KVM med en Vultr VPS. Trinn 1. Logg på Vultr-kontrollpanelet. Trinn 2. Klikk på DEPLOY
Bruker du et annet system? osTicket er et åpen kildekode kundestøtte billettsystem. osTicket-kildekoden er offentlig vert på Github. I denne opplæringen
Bruker du et annet system? Flarum er en gratis og åpen kildekode neste generasjons forumprogramvare som gjør nettdiskusjoner morsomme. Flarum kildekode er vert for o
Bruker du et annet system? TLS 1.3 er en versjon av Transport Layer Security (TLS)-protokollen som ble publisert i 2018 som en foreslått standard i RFC 8446
Introduksjon WordPress er det dominerende innholdsstyringssystemet på internett. Den driver alt fra blogger til komplekse nettsteder med dynamisk innhold
Bruker du et annet system? Subrion 4.1 CMS er et kraftig og fleksibelt innholdsstyringssystem (CMS) med åpen kildekode som gir et intuitivt og tydelig innhold
Denne opplæringen viser deg hvordan du konfigurerer en DNS-tjeneste som er enkel å vedlikeholde, enkel å konfigurere og som generelt er sikrere enn den klassiske BIN-en.
En FEMP-stack, som kan sammenlignes med en LEMP-stack på Linux, er en samling åpen kildekode-programvare som vanligvis installeres sammen for å aktivere en FreeBS
MongoDB er en NoSQL-database i verdensklasse som brukes ofte i nyere webapplikasjoner. Det gir høyytelsesspørringer, sharding og replikering
Bruker du et annet system? Monica er et åpen kildekodesystem for personlig relasjonsstyring. Tenk på det som et CRM (et populært verktøy som brukes av salgsteam i th
Introduksjon Denne opplæringen demonstrerer OpenBSD som en e-handelsløsning som bruker PrestaShop og Apache. Apache er nødvendig fordi PrestaShop har kompleks UR
Bruker du et annet system? Fork er et åpen kildekode CMS skrevet i PHP. Forks kildekode er vert på GitHub. Denne guiden viser deg hvordan du installerer Fork CM
Bruker du et annet system? Directus 6.4 CMS er et kraftig og fleksibelt, gratis og åpen kildekode Headless Content Management System (CMS) som gir utviklere
VPS-servere er ofte målrettet av inntrengere. En vanlig type angrep dukker opp i systemlogger som hundrevis av uautoriserte ssh-påloggingsforsøk. Setter opp
Introduksjon OpenBSD 5.6 introduserte en ny demon kalt httpd, som støtter CGI (via FastCGI) og TLS. Ingen ekstra arbeid er nødvendig for å installere den nye http
Denne opplæringen viser deg hvordan du installerer gruppevaren iRedMail på en ny installasjon av FreeBSD 10. Du bør bruke en server med minst én gigabyte o
Kunstig intelligens er ikke i fremtiden, det er her akkurat i nåtiden I denne bloggen Les hvordan kunstig intelligens-applikasjoner har påvirket ulike sektorer.
Er du også et offer for DDOS-angrep og forvirret over forebyggingsmetodene? Les denne artikkelen for å løse spørsmålene dine.
Du har kanskje hørt at hackere tjener mye penger, men har du noen gang lurt på hvordan tjener de den slags penger? la oss diskutere.
Vil du se revolusjonerende oppfinnelser fra Google og hvordan disse oppfinnelsene forandret livet til alle mennesker i dag? Les deretter til bloggen for å se oppfinnelser fra Google.
Konseptet med selvkjørende biler som skal ut på veiene ved hjelp av kunstig intelligens er en drøm vi har hatt en stund nå. Men til tross for flere løfter, er de ingen steder å se. Les denne bloggen for å lære mer...
Ettersom vitenskapen utvikler seg raskt og tar over mye av innsatsen vår, øker også risikoen for å utsette oss for en uforklarlig singularitet. Les hva singularitet kan bety for oss.
Lagringsmetodene for dataene har vært i utvikling kan være siden fødselen av dataene. Denne bloggen dekker utviklingen av datalagring på grunnlag av en infografikk.
Les bloggen for å kjenne ulike lag i Big Data Architecture og deres funksjoner på den enkleste måten.
I denne digitaldrevne verden har smarthusenheter blitt en avgjørende del av livet. Her er noen fantastiske fordeler med smarthusenheter om hvordan de gjør livet vårt verdt å leve og enklere.
Nylig lanserte Apple macOS Catalina 10.15.4 en tilleggsoppdatering for å fikse problemer, men det ser ut til at oppdateringen forårsaker flere problemer som fører til muring av mac-maskiner. Les denne artikkelen for å lære mer