mirror of
https://github.com/mail-in-a-box/mailinabox.git
synced 2025-04-21 03:02:09 +00:00
Apply SPF policy checks to incoming email
This commit is contained in:
parent
65add24e2a
commit
ecbb0d7108
@ -41,6 +41,8 @@ source /etc/mailinabox.conf # load global vars
|
|||||||
# always will.
|
# always will.
|
||||||
# * `ca-certificates`: A trust store used to squelch postfix warnings about
|
# * `ca-certificates`: A trust store used to squelch postfix warnings about
|
||||||
# untrusted opportunistically-encrypted connections.
|
# untrusted opportunistically-encrypted connections.
|
||||||
|
# * `postfix-policyd-spf-python`: A SPF policy checker for postfix, checks DNS
|
||||||
|
# spf records from the sender to check if they are allowed to send email for the domain.
|
||||||
#
|
#
|
||||||
# postgrey is going to come in via the Mail-in-a-Box PPA, which publishes
|
# postgrey is going to come in via the Mail-in-a-Box PPA, which publishes
|
||||||
# a modified version of postgrey that lets senders whitelisted by dnswl.org
|
# a modified version of postgrey that lets senders whitelisted by dnswl.org
|
||||||
@ -50,7 +52,7 @@ source /etc/mailinabox.conf # load global vars
|
|||||||
# > anti-spam solutions) must register with dnswl.org and purchase a subscription.
|
# > anti-spam solutions) must register with dnswl.org and purchase a subscription.
|
||||||
|
|
||||||
echo "Installing Postfix (SMTP server)..."
|
echo "Installing Postfix (SMTP server)..."
|
||||||
apt_install postfix postfix-pcre postgrey ca-certificates
|
apt_install postfix postfix-pcre postgrey ca-certificates postfix-policyd-spf-python
|
||||||
|
|
||||||
# ### Basic Settings
|
# ### Basic Settings
|
||||||
|
|
||||||
@ -184,7 +186,8 @@ tools/editconf.py /etc/postfix/main.cf virtual_transport=lmtp:[127.0.0.1]:10025
|
|||||||
# * `permit_mynetworks`: Mail that originates locally can skip further checks.
|
# * `permit_mynetworks`: Mail that originates locally can skip further checks.
|
||||||
# * `reject_rbl_client`: Reject connections from IP addresses blacklisted in zen.spamhaus.org
|
# * `reject_rbl_client`: Reject connections from IP addresses blacklisted in zen.spamhaus.org
|
||||||
# * `reject_unlisted_recipient`: Although Postfix will reject mail to unknown recipients, it's nicer to reject such mail ahead of greylisting rather than after.
|
# * `reject_unlisted_recipient`: Although Postfix will reject mail to unknown recipients, it's nicer to reject such mail ahead of greylisting rather than after.
|
||||||
# * `check_policy_service`: Apply greylisting using postgrey.
|
# * `check_policy_service inet:127.0.0.1:10023`: Apply greylisting using postgrey.
|
||||||
|
# * `check_policy_service unix:private/policy-spf`: Apply SPF record verification using policy-spf.
|
||||||
#
|
#
|
||||||
# Notes: #NODOC
|
# Notes: #NODOC
|
||||||
# permit_dnswl_client can pass through mail from whitelisted IP addresses, which would be good to put before greylisting #NODOC
|
# permit_dnswl_client can pass through mail from whitelisted IP addresses, which would be good to put before greylisting #NODOC
|
||||||
@ -193,7 +196,7 @@ tools/editconf.py /etc/postfix/main.cf virtual_transport=lmtp:[127.0.0.1]:10025
|
|||||||
# "450 4.7.1 Client host rejected: Service unavailable". This is a retry code, so the mail doesn't properly bounce. #NODOC
|
# "450 4.7.1 Client host rejected: Service unavailable". This is a retry code, so the mail doesn't properly bounce. #NODOC
|
||||||
tools/editconf.py /etc/postfix/main.cf \
|
tools/editconf.py /etc/postfix/main.cf \
|
||||||
smtpd_sender_restrictions="reject_non_fqdn_sender,reject_unknown_sender_domain,reject_authenticated_sender_login_mismatch,reject_rhsbl_sender dbl.spamhaus.org" \
|
smtpd_sender_restrictions="reject_non_fqdn_sender,reject_unknown_sender_domain,reject_authenticated_sender_login_mismatch,reject_rhsbl_sender dbl.spamhaus.org" \
|
||||||
smtpd_recipient_restrictions=permit_sasl_authenticated,permit_mynetworks,"reject_rbl_client zen.spamhaus.org",reject_unlisted_recipient,"check_policy_service inet:127.0.0.1:10023"
|
smtpd_recipient_restrictions=permit_sasl_authenticated,permit_mynetworks,"reject_rbl_client zen.spamhaus.org",reject_unlisted_recipient,"check_policy_service inet:127.0.0.1:10023","check_policy_service unix:private/policy-spf"
|
||||||
|
|
||||||
# Postfix connects to Postgrey on the 127.0.0.1 interface specifically. Ensure that
|
# Postfix connects to Postgrey on the 127.0.0.1 interface specifically. Ensure that
|
||||||
# Postgrey listens on the same interface (and not IPv6, for instance).
|
# Postgrey listens on the same interface (and not IPv6, for instance).
|
||||||
@ -210,6 +213,19 @@ tools/editconf.py /etc/default/postgrey \
|
|||||||
tools/editconf.py /etc/postfix/main.cf \
|
tools/editconf.py /etc/postfix/main.cf \
|
||||||
message_size_limit=134217728
|
message_size_limit=134217728
|
||||||
|
|
||||||
|
# Configure the SPF policy checking for incoming email
|
||||||
|
#
|
||||||
|
# Policy SPF will check the if the sender has configured an SPF record on the domain.
|
||||||
|
# This record contains the address of the smtp server(s) that is allowd to send email
|
||||||
|
# on behalf of this domain. If that doesn't match with the server sending us email,
|
||||||
|
# the message will be rejected
|
||||||
|
tools/editconf.py /etc/postfix/main.cf \
|
||||||
|
policy-spf_time_limit=3600s \
|
||||||
|
|
||||||
|
tools/editconf.py /etc/postfix/master.cf \
|
||||||
|
"policy-spf unix - n n - - spawn
|
||||||
|
user=nobody argv=/usr/bin/policyd-spf"
|
||||||
|
|
||||||
# Allow the two SMTP ports in the firewall.
|
# Allow the two SMTP ports in the firewall.
|
||||||
|
|
||||||
ufw_allow smtp
|
ufw_allow smtp
|
||||||
|
Loading…
Reference in New Issue
Block a user