Skip to content


Mettre en place SPF avec Postfix sous Debian Squeeze

Introduction

J'ai fait quelques articles sur comment sécuriser son Postfix et par là même rendre plus sûre la réception des courriels de vos utilisateurs :

http://monblog.system-linux.net/blog/2008/11/11/procmailrc-spamassassin-clamav/

http://monblog.system-linux.net/blog/2008/11/06/installation-de-postfix-avec-authentification-sasl-dovecot-imap/

http://monblog.system-linux.net/blog/2011/09/24/mettre-en-place-dkim-avec-postfix-sous-debian-sueeze/

Mais avez-vous imaginer sécuriser ceux qui réceptionnaient les courriels de vos utilisateurs... ? Oui ! Très bien !

Mise en place de SPF

apt-get install postfix-policyd-spf-perl

Dans Postfix

Nous allons mettre en place dans Postfix la partie filtre SPF. Pour cela deux fichiers à modifier, le premier est /etc/postfix/master.cf auquel en fin de fichier nous allons ajouter la ligne :

policy  unix  -       n       n       -       -       spawn
        user=nobody argv=/usr/sbin/postfix-policyd-spf-perl

Il devient donc :

#
# Postfix master process configuration file.  For details on the format
# of the file, see the master(5) manual page (command: "man 5 master").
#
# Do not forget to execute "postfix reload" after editing this file.
#
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      inet  n       -       -       -       -       smtpd
#submission inet n       -       -       -       -       smtpd
#  -o smtpd_tls_security_level=encrypt
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
#smtps     inet  n       -       -       -       -       smtpd
#  -o smtpd_tls_wrappermode=yes
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
#628       inet  n       -       -       -       -       qmqpd
pickup    fifo  n       -       -       60      1       pickup
cleanup   unix  n       -       -       -       0       cleanup
qmgr      fifo  n       -       n       300     1       qmgr
#qmgr     fifo  n       -       -       300     1       oqmgr
tlsmgr    unix  -       -       -       1000?   1       tlsmgr
rewrite   unix  -       -       -       -       -       trivial-rewrite
bounce    unix  -       -       -       -       0       bounce
defer     unix  -       -       -       -       0       bounce
trace     unix  -       -       -       -       0       bounce
verify    unix  -       -       -       -       1       verify
flush     unix  n       -       -       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       -       -       -       smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay     unix  -       -       -       -       -       smtp
    -o smtp_fallback_relay=
#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq     unix  n       -       -       -       -       showq
error     unix  -       -       -       -       -       error
retry     unix  -       -       -       -       -       error
discard   unix  -       -       -       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       -       -       -       lmtp
anvil     unix  -       -       -       -       1       anvil
scache    unix  -       -       -       -       1       scache
#
# ====================================================================
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
#
# Many of the following services use the Postfix pipe(8) delivery
# agent.  See the pipe(8) man page for information about ${recipient}
# and other message envelope options.
# ====================================================================
#
# maildrop. See the Postfix MAILDROP_README file for details.
# Also specify in main.cf: maildrop_destination_recipient_limit=1
#
maildrop  unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
#
# ====================================================================
#
# Recent Cyrus versions can use the existing "lmtp" master.cf entry.
#
# Specify in cyrus.conf:
#   lmtp    cmd="lmtpd -a" listen="localhost:lmtp" proto=tcp4
#
# Specify in main.cf one or more of the following:
#  mailbox_transport = lmtp:inet:localhost
#  virtual_transport = lmtp:inet:localhost
#
# ====================================================================
#
# Cyrus 2.1.5 (Amos Gouaux)
# Also specify in main.cf: cyrus_destination_recipient_limit=1
#
#cyrus     unix  -       n       n       -       -       pipe
#  user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
#
# ====================================================================
# Old example of delivery via Cyrus.
#
#old-cyrus unix  -       n       n       -       -       pipe
#  flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}
#
# ====================================================================
#
# See the Postfix UUCP_README file for configuration details.
#
uucp      unix  -       n       n       -       -       pipe
  flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
#
# Other external delivery methods.
#
ifmail    unix  -       n       n       -       -       pipe
  flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp     unix  -       n       n       -       -       pipe
  flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
scalemail-backend unix    -    n    n    -    2    pipe
  flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
mailman   unix  -       n       n       -       -       pipe
  flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
  ${nexthop} ${user}
policy  unix  -       n       n       -       -       spawn
        user=nobody argv=/usr/sbin/postfix-policyd-spf-perl

Puis nous allons modifier /etc/postfix/main.cf afin de tenir compte de ce qui a été ajouté dans le fichier master.cf. Ajoutons la règle pour les restrictions sur le récépissé !

check_policy_service unix:private/policy

Le fichier devient :

smtpd_recipient_restrictions = permit_sasl_authenticated,
                               permit_mynetworks,
                               reject_unauth_destination,
                               check_policy_service inet:127.0.0.1:60000,
                               check_policy_service unix:private/policy

Redémarrons les services de Postfix !

/etc/init.d/postfix restart

Dans Bind

Vous allez devoir ajouter des entrées TXT dans les fichiers de paramétrage de votre domaine indiquant comment et où se place le processus SPF.

Chez moi j'ai deux fichiers pour mon domaine, le fichier Nom-->IP et le fichier reverse IP-->Nom

Editons le fichier reverse IP --> Nom : /etc/bind/votreIP.rev

$ttl 38400
175.59.67.82.in-addr.arpa.    IN    SOA    helios.system-linux.net. hostmaster (
            2006010407
            10800
            3600
            604800
            38400 )
            TXT    "v=spf1 a mx ptr mx:smtp.system-linux.net ip4:10.0.0.0/8 ip4:127.0.0.0/8 ip4:82.67.59.175 ~all"
            SPF    "v=spf1 a mx ptr mx:smtp.system-linux.net ip4:10.0.0.0/8 ip4:127.0.0.0/8 ip4:82.67.59.175 ~all"
 
175.59.67.82.in-addr.arpa.    IN    NS    helios.system-linux.net.
175.59.67.82.in-addr.arpa.    IN    NS    dns-sln-lyon.system-linux.net.
175.59.67.82.in-addr.arpa.    IN    NS    dns2-sln-lyon.system-linux.net.
 
@            10800    IN    MX    5    smtp.system-linux.net.
 
175.59.67.82.in-addr.arpa.    IN    PTR    helios.system-linux.net.
175.59.67.82.in-addr.arpa.    IN    PTR    dns-sln-lyon.system-linux.net.
175.59.67.82.in-addr.arpa.    IN    PTR    dns2-sln-lyon.system-linux.net.
175.59.67.82.in-addr.arpa.    IN    PTR    smtp.system-linux.net.
175.59.67.82.in-addr.arpa.    IN    PTR    pop.system-linux.net.
175.59.67.82.in-addr.arpa.    IN    PTR    www.system-linux.net.
 
175.59.67.82.in-addr.arpa.    IN    PTR    monblog.system-linux.net.
175.59.67.82.in-addr.arpa.    IN    PTR    diaspora.system-linux.net.

Puis le fichier Nom --> IP : /etc/bind/domain.hosts

$ORIGIN .
$TTL 38400    ; 10 hours 40 minutes
system-linux.net    IN    SOA    helios.system-linux.net. hostmaster.system-linux.net. (
            2006010516
            1200
            120
            604800
            7200 )
            NS    helios.system-linux.net.
            NS    dns-sln-lyon.system-linux.net.
            NS    dns2-sln-lyon.system-linux.net.
$TTL 600    ; 10 minutes
            A    82.67.59.175
$TTL 38400    ; 10 hours 40 minutes
            MX    5 smtp.system-linux.net.
            TXT    "v=spf1 a mx ptr mx:smtp.system-linux.net ip4:10.0.0.0/8 ip4:127.0.0.0/8 ip4:82.67.59.175 ~all"
            SPF    "v=spf1 a mx ptr mx:smtp.system-linux.net ip4:10.0.0.0/8 ip4:127.0.0.0/8 ip4:82.67.59.175 ~all"
 
; DKIM
_domainkey.system-linux.net.                  IN TXT  "t=y; o=-;"
dkim._domainkey.system-linux.net.    IN TXT "k=rsa; t=s; p=blabla ... blabla"
 
$ORIGIN system-linux.net.
admin            A    82.67.59.175
 
$TTL 38400    ; 10 hours 40 minutes
system-linux.net.        IN    LOC    45 46 0.000 N 4 50 0.000 E 248.00m 0.00m 10000m 10m
DNS-SLN-Lyon        A    82.67.59.175
DNS2-SLN-Lyon        A    82.67.59.175
helios            A    82.67.59.175
monblog            A    82.67.59.175
pop            A    82.67.59.175
smtp            A    82.67.59.175
www            A    82.67.59.175
diaspora        A    82.67.59.175
dkim._domainkey        A    82.67.59.175

Vous devez redémarrer le service de Bind9

/etc/init.d/bind9 restart

Il ne vous reste plus qu'a vérifier votre paramétrage et que vos courriels partent et arrivent correctement !

Pour le paramétrage  : http://www.mxtoolbox.com/spf.aspx

Pour le courriel check-auth at verifier.port25.com

🙂

- Fin -

 

Print Friendly, PDF & Email

Posted in Debian, Linux, Sécurité, Technique, Toutes. Tagged with , , , , .

One Response

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

Continuing the Discussion

  1. test Blue mind 3 + DKIM + SPF sur debian (kimsufi OVH) - Mouef linked to this post on 15 mars 2014

    […] Maintenant on va installer SPF. Là encore, la procédure n’est pas le fruit de mon cerveau, j’ai utilisé le petit tuto disponible là. […]

Some HTML is OK

(required)

(required, but never shared)

or, reply to this post via trackback.

Time limit is exhausted. Please reload CAPTCHA.


/* */
Creative Commons License
Cette création par Laurent Besson est mise à disposition selon les termes de la licence Creative Commons Paternité-Partage des Conditions Initiales à l'Identique 2.0 France.