/etc/postfix/main.cf
-konfigureringsfil.
mail.falcot.com
. Dette er det eneste spørsmålet ved oppstart, men oppsettet den fører til er ikke komplett nok for behovene til Falcot, noe som er grunnen til at administratorene kjører dpkg-reconfigure postfix
slik at man er i stand til å tilpasse flere parametre.
localhost
, men hoved-domenet falcot.com
må legges for hånd. Mer generelt bør dette spørsmålet vanligvis besvares med alle domene-navnene som denne maskinen skal tjene som MX-tjener for; med andre ord, alle domene-navnene for hvem DNS sier at denne maskinen vil akseptere e-post. Denne informasjonen ender opp i mydestination
-variabelen i Postfixs hovedoppsettsfil - /etc/postfix/main.cf
.
192.168.0.0/16
til standardsvaret. Hvis spørsmålet ikke er spurt, er den relevant variabel i konfigurasjonsfilen mynetworks
, slik som i eksemplet nedenfor.
procmail
. Dette verktøyet tillater brukere å sortere sin innkommende e-post etter regler som er lagret i deres ~/.procmailrc
-fil.
Eksempel 11.1. Innledende /etc/postfix/main.cf
-fil
# See /usr/share/postfix/main.cf.dist for a commented, more complete version # Debian specific: Specifying a file name will cause the first # line of that file to be used as the name. The Debian default # is /etc/mailname. #myorigin = /etc/mailname smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) biff = no # appending .domain is the MUA's job. append_dot_mydomain = no # Uncomment the next line to generate "delayed mail" warnings #delay_warning_time = 4h readme_directory = no # TLS parameters smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key smtpd_use_tls=yes smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache # See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for # information on enabling SSL in the smtp client. smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination myhostname = mail.falcot.com alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = /etc/mailname mydestination = mail.falcot.com, falcot.com, localhost.localdomain, localhost relayhost = mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.0.0/16 mailbox_command = procmail -a "$EXTENSION" mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all inet_protocols = all
virtual_alias_domains
-variabelen, og vise til en adressekartleggingsfil i virtual_alias_maps
-variabelen.
Eksempel 11.2. Direktiver til å legge i /etc/postfix/main.cf
-filen
virtual_alias_domains = falcotsbrand.com virtual_alias_maps = hash:/etc/postfix/virtual
/etc/postfix/virtual
-filen beskriver en kartlegging med en ganske grei syntaks: Hver linje inneholder to felt adskilt med mellomrom; Det første feltet er alias-navnet, det andre feltet er en liste over e-postadresser der det omdirigeres. Den spesielle @domain.com
-syntaksen dekker alle gjenstående aliaser i et domene.
Eksempel 11.3. Eksempel /etc/postfix/virtual
-fil
webmaster@falcotsbrand.com jean@falcot.com contact@falcotsbrand.com laure@falcot.com, sophie@falcot.com # The alias below is generic and covers all addresses within # the falcotsbrand.com domain not otherwise covered by this file. # These addresses forward email to the same user name in the # falcot.com domain. @falcotsbrand.com @falcot.com
virtual_mailbox_domains
-variabelen, og refererer til en postkassekartleggingsfil i virtual_mailbox_maps
. virtual_mailbox_base
-parameteren inneholder katalogen der postkasser vil bli lagret.
virtual_uid_maps
-parameteret (respektivt virtual_gid_maps
) refererer til filen som inneholder kartleggingen mellom e-postadressen og system-brukeren (henholdsvis -gruppen) som "eier" den tilsvarende postkassen. For å få alle postkasser som eies av samme eier/gruppe, tilordner static:5000
syntaksen en fast UID/GID (med verdien 5000 her).
Eksempel 11.4. Direktiver til å legge i /etc/postfix/main.cf
-filen
virtual_mailbox_domains = falcot.org virtual_mailbox_maps = hash:/etc/postfix/vmailbox virtual_mailbox_base = /var/mail/vhosts
/etc/postfix/vmailbox
-filen er ganske enkel: To felt adskilt med mellomrom. Det første feltet er en e-postadresse i et av de virtuelle domene, og det andre feltet er plasseringen av den tilhørende postkasse (relativt til katalogen spesifisert i virtual_mailbox_base). Hvis postboksen ender med en skråstrek (/
), blir e-postene lagret i maildir-formatet; ellers blir det tradisjonelle mbox-formatet brukt. maildir-formatet bruker en hel katalog for å lagre en postkasse, hver enkelt melding blir lagret i en egen fil. I mbox-formatet, på den andre siden, er hele postboksen lagret i en fil, og hver linje som starter med “From
” (From
fulgt av et mellomrom) signaliserer starten på en ny e-post.
Eksempel 11.5. /etc/postfix/vmailbox
-filen
# Jean's email is stored as maildir, with # one file per email in a dedicated directory jean@falcot.org falcot.org/jean/ # Sophie's email is stored in a traditional "mbox" file, # with all mails concatenated into one single file sophie@falcot.org falcot.org/sophie
smtpd_client_restrictions
-direktivet styrer hvilke maskiner som får lov til å kommunisere med e-posttjeneren.
Eksempel 11.6. Restriksjoner basert på klientadresse
smtpd_client_restrictions = permit_mynetworks, warn_if_reject reject_unknown_client, check_client_access hash:/etc/postfix/access_clientip, reject_rbl_client sbl-xbl.spamhaus.org, reject_rbl_client list.dsbl.org
permit_mynetworks
-direktivet, brukt som den første regelen, godtar alle e-poster som kommer fra en maskin i det lokale nettverket (som definert av konfigureringsvariabelen mynetworks).
warn_if_reject
modifikatoren til reject_unknown_client
-direktivet: Denne modifikatoren gjør om avvisningen til en enkel varsling registrert i loggene. Administratorene kan deretter holde et øye med antall meldinger som ville bli avvist hvis regelen ble faktisk ble håndhevet, og ta en avgjørelse senere hvis de ønsker å muliggjøre slik håndheving.
/etc/postfix/access_clientip
-filen. Tjenere i hvitelisten anses som klarert, og e-poster som kommer fra det derfor ikke gå gjennom følgende filtreringsregler.
HELO
(eller EHLO
)-kommando, etterfulgt av navnet på e-posttjeneren som sender; Det kan være interessant å kontrollere gyldigheten av dette navnet.
Eksempel 11.7. Restriksjoner på navnet som er meldt i EHLO
smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname, check_helo_access hash:/etc/postfix/access_helo, reject_non_fqdn_hostname, warn_if_reject reject_unknown_hostname
permit_mynetworks
-direktivet tillater at alle maskiner på det lokale nettverket fritt å legge seg til. Dette er viktig, fordi noen e-postprogrammer ikke respekterer denne delen av SMTP-protokollen godt nok, og de kan legge seg til med meningsløse navn.
reject_invalid_hostname
-regelen avviser e-poster når EHLO
-visningen lister et vertsnavn med feilaktig syntaks. reject_non_fqdn_hostname
-regelen avviser meldinger når annonserte vertsnavn er ikke et fullt kvalifisert domenenavn (inkludert et domenenavn så vel som et vertsnavn). reject_unknown_hostname
regelen avviser meldinger hvis det annonserte navnet ikke finnes i DNS. Siden denne siste regelen dessverre fører til altfor mange avslag, snudde administratorene denne virkningen med en enkel advarsel ved hjelp av warn_if_reject
-modifikatoren som et første skritt; de kan fjerne denne modifikatoren på et senere tidspunkt, etter å ha gjennomgått resultatene av å bruke av regelen.
permit_mynetworks
som den første regelen har en interessant bieffekt: De følgende regler gjelder kun verter utenfor det lokale nettverket. Dette tillater svartelisting av alle verter som varsler seg selv som en del av falcot.com
, for eksempel for å legge til en falcot.com REJECT You are not in our network!
-linje til /etc/postfix/access_helo
-filen.
MAIL FROM
-kommandoen fra SMTP-protokollen; Igjen, kan denne informasjonen bli validert på flere forskjellige måter.
Eksempel 11.8. Sjekking av sender
smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/access_sender, reject_unknown_sender_domain, reject_unlisted_sender, reject_non_fqdn_sender
/etc/postfix/access_sender
-tabellen gir en noe spesiell behandling for noen avsendere. Dette betyr vanligvis å liste noen av avsendere i en hvitliste eller en svartliste.
reject_unknown_sender_domain
-regelen krever et gyldig avsenderdomene, siden det er nødvendig for en gyldig adresse. reject_unlisted_sender
-regel avviser lokale sendere hvis adressen ikke eksisterer; Dette forhindrer e-poster å blir sendt fra en ugyldig adresse i falcot.com
-domenet, og meldinger som skriver seg fra joe.bloggs@falcot.com
aksepteres kun dersom en slik adresse virkelig eksisterer.
reject_non_fqdn_sender
-regelen e-post som angivelig kommer fra adresser uten et fullt kvalifisert domenenavn. I praksis betyr dette å avvise e-postmeldinger som kommer fra user@machine
: Adressen må bli annonsert som enten user@machine.example.com
eller user@example.com
.
RCPT TO
-kommandoen i SMTP-protokollen. Disse adressene garanterer også validering, selv om det kan være mindre relevant enn sjekkene av avsenderadressen.
Eksempel 11.9. Sjekk av mottaker
smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination, reject_unlisted_recipient, reject_non_fqdn_recipient
reject_unauth_destination
er den grunnleggende regelen som krever at meldinger utenfra som adresseres til oss; men til en adresse som ikke er betjent med denne tjeneren, blir avvist. Uten denne regelen, blir tjeneren et åpent relé som tillater spammere å sende uønsket e-post. Denne regelen er derfor obligatorisk, og den er tas best inn nær begynnelsen av listen, slik at ingen andre regler kan autorisere meldingen før destinasjonen er kontrollert.
reject_unlisted_recipient
-regelen avviser meldinger som sendes til ikke-eksisterende lokale brukere, noe som gir mening. Endelig avslår reject_non_fqdn_recipient
-regelen ikke-fullt-kvalifiserte adresser; Dette gjør det umulig å sende en e-post til jean
eller jean@machine
, og kreve bruk av hele adressen i stedet, som for eksempel jean@machine.falcot.com
eller jean@falcot.com
.
DATA
-kommandoen til SMTP avgis før innholdet i meldingen. Den gir ikke noen informasjon per se, bortsett fra annonsere hva som kommer etterpå. Det kan fortsatt være underlagt sjekk.
reject_unauth_pipelining
-direktivene fører til at meldingen blir avvist hvis avsender sender en kommando før svaret på den forrige kommando er blitt sendt. Dette beskytter mot en vanlig optimalisering som brukes av spammeroboter, siden de vanligvis ikke bryr seg det grann om svar og bare fokuserer på å sende så mange e-poster som mulig på så kort tid som mulig.
RCPT TO
-kommandoen.
EHLO
-kommando. Postfix kjenner avsenderen og mottakeren da avvisningen ble varslet. Den kan da logge et mer eksplisitt budskap enn om transaksjonen hadde blitt avbrutt fra starten. I tillegg, en rekke SMTP-klienter trenger ikke forvente feil med de tidlige SMTP-kommandoene, og disse klientene blir mindre forstyrret av dette ved denne senere avvisningen.
Eksempel 11.11. Å aktivere innholdsbaserte filtre
header_checks = regexp:/etc/postfix/header_checks body_checks = regexp:/etc/postfix/body_checks
Eksempel 11.12. Eksempelfil /etc/postfix/header_checks
/^X-Mailer: GOTO Sarbacane/ REJECT I fight spam (GOTO Sarbacane) /^Subject: *Your email contains VIRUSES/ DISCARD virus notification
GOTO Sarbacane
(en samling e-post-programvare) blir funnet, blir meldingen avvist. Det andre uttrykket styrer meldingens subjekt; hvis det nevner et virusvarsel, kan vi bestemme oss for ikke å avvise meldingen, men straks å forkaste den i stedet.
check_policy_service
-parameteret som en ekstra begrensning:
smtpd_recipient_restrictions = permit_mynetworks, [...] check_policy_service inet:127.0.0.1:10023
postgrey
-nissen og sende den informasjon om den aktuelle meldingen. På sin side, vurderer Postgrey trillingen IP-"adresse/avsende/mottaker" og sjekker i sin database om det samme trillingen er sett i det siste. Hvis ja, svarer Postgrey at meldingen skal godtas; hvis ikke, indikerer svaret at meldingen skal avvises midlertidig, og trillingen blir registrert i databasen.
smtpd_restriction_classes
-parameteret, og definert på den samme måten som smtpd_recipient_restrictions
. check_recipient_access
-direktivet definerer deretter en tabell som legger en gitt mottaker til det riktige settet med restriksjoner.
Eksempel 11.13. Definere begrensningsklasser i main.cf
smtpd_restriction_classes = greylisting, aggressive, permissive greylisting = check_policy_service inet:127.0.0.1:10023 aggressive = reject_rbl_client sbl-xbl.spamhaus.org, check_policy_service inet:127.0.0.1:10023 permissive = permit smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination, check_recipient_access hash:/etc/postfix/recipient_access
Eksempel 11.14. /etc/postfix/recipient_access
-filen
# Unfiltered addresses postmaster@falcot.com permissive support@falcot.com permissive sales-asia@falcot.com permissive # Aggressive filtering for some privileged users joe@falcot.com aggressive # Special rule for the mailing-list manager sympa@falcot.com reject_unverified_sender # Greylisting by default falcot.com greylisting
clamav
som sin frie antivirus. Hovedpakken er clamav, men de installerte også noen få ekstra pakker, som arj, unzoo, unrar og lha, siden de er nødvendige for at antiviruset skal analysere vedlegg arkiveres i ett av disse formatene.
clamav-milter
. milter (kort for mail filter) er et filterprogram spesielt utviklet for å kommunisere med e-posttjenere. Et milter bruker et standard programmeringsgrensesnitt (API) som gir mye bedre ytelse enn eksterne e-posttjener-filtre. Milters ble først introdusert av Sendmail, men Postfix kom snart etter.
dpkg-reconfigure clamav-milter
. Når du blir bedt om “Communication interface with Sendmail”, svar “inet:10002@127.0.0.1
”.
dpkg-reconfigure clamav-base
.
/etc/postfix/main.cf
:
# Virus check with clamav-milter smtpd_milters = inet:[127.0.0.1]:10002
service postfix reload
skal kjøres slik at denne endringen er tatt hensyn til.
saslpasswd2
-kommandoen, som krever flere parametre. -u
-valget definerer godkjenningsdomenet, som må samsvare med smtpd_sasl_local_domain
-parameteret i Postfix-oppsettet. -c
-valget tillater å lage en bruker, og -f
kan spesifisere filen som skal brukes hvis SASL-databasen må lagres på et annet sted enn opprinnelig (/etc/sasldb2
).
#
saslpasswd2 -u `postconf -h myhostname` -f /var/spool/postfix/etc/sasldb2 -c jean
[... type jean's password twice ...]
/etc/sasldb2
til en symbolsk lenke som peker på databasen som brukes av Postfix, med ln -sf /var/spool/postfix/etc/sasldb2 /etc/sasldb2
-kommandoen.
postfix
-brukeren legges til sasl
-gruppen, slik at den kan få tilgang til SASL-kontoens database. Et par nye parametere må også til for å aktivere SASL, og smtpd_recipient_restrictions
-parameteret må konfigureres til å tillate at SASL-godkjente klienter fritt kan sende e-post.
Eksempel 11.15. Å sette opp SASL i /etc/postfix/main.cf
# Enable SASL authentication smtpd_sasl_auth_enable = yes # Define the SASL authentication domain to use smtpd_sasl_local_domain = $myhostname [...] # Adding permit_sasl_authenticated before reject_unauth_destination # allows relaying mail sent by SASL-authenticated users smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, [...]