Outils pour utilisateurs

Outils du site


serveur_postfix2

Ceci est une ancienne révision du document !


Postfix

Liens:

  • DomU (non expliqué)
  • Dans un reseau local (donc derrière une box)
  • 64 bit
  • Debian/Squeeze
  • Postfix
  • Courier
  • PostGrey
  • SpamAssassin

Systeme

On va utiliser une machine virtualisé… avec peu de mémoire, peu de disk…

Fichiers altérés

/etc/hosts

127.0.0.1    localhost
127.0.1.1    mail.thierry-jaouen.local mail

Pas d'ipv6

J'aime avoir 10 ans de retard :)

/etc/sysctl.conf

# Desactiver Ipv6 (sous Squeeze)
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.all.autoconf=0
net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.default.autoconf=0

Appliquer modif:

# sysctl -p

Au 1er boot

# dpkg-reconfigure tzdata
# dpkg-reconfigure locales

DNS

Il serait recommandé d'avoir un DNS super rapide… plus que bind ?

Le mieux serait: dnscache-run

Lien: http://www.djbdnsrocks.org/

Mais je ne le ferais pas.

smtp

Et donc, “postfix” !

introduction

# cat /etc/mailname 
tjaouen.fr
# cat /etc/aliases
postmaster:    root
root: <un_email>
# aptitude install postfix

Et eventuellement:

# aptitude install mailutils

Ca peut être utile…

simple

Editer le fichier /etc/postfix/main.cf, et avoir au moins:

...
myhostname = mail.thierry-jaouen.local
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = tjaouen.fr, thierry-jaouen.fr, mail.thierry-jaouen.local, localhost
relayhost = [smtp.live-free-box.fr]
#mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mynetworks = 127.0.0.0/8 192.168.0.0/24
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = ipv4
:!: “relayhost=” devrait être vide, mais “gmail.com” n'aime pas mon serveur avec une IP de particulier… donc, j'utilise “smtp.live-free-box.fr” en relai

Test:

$ echo TEST | mail -s TEST root@localhost

Ca marche.

Mais on n'a pas vraiment de comptes locaux !

virtual

Préalable: installer “courier” pour avoir quelques outils supplémentaires:

# aptitude install courier-pop courier-pop-ssl courier-imap-ssl courier-imap procmail
:!: En fait, c'est juste pour récuperer le script “maildirmake” ! lol

Donc, on va créer des comptes locaux…

On aura 1 compte local = 1 ou plusieurs comptes mail.

Dans /etc/skel créé un *squelette* de home, applicable pour tous.

# cd /etc/skel

Simple (trop?):

# maildirmake .

Plus complet :

# maildirmake.courier Maildir &&  maildirmake.courier Maildir/.Sent &&  maildirmake.courier Maildir/.Trash && maildirmake.courier Maildir/.Drafts &&  maildirmake.courier Maildir/.Lists

Dans /etc/adduser.conf , verifier qu'on a au moins:

DSHELL=/bin/false
USERGROUPS=no

Ce qui est desactive l'accès au “shell” et met les comptes dans le groupe “user”.

# adduser toto
# cd /etc/postfix

Dans virtual :

toto-pas-de-spam@tjaouen.fr       toto

Faire:

# postmap virtual

(ce qui créé un “.db”)

Ajouter dans main.cf :

# Adresses virtuelles
virtual_alias_maps = hash:/etc/postfix/virtual

# Repertoire dans lequel on stocke le courrier /home/$user/<rep>
# le "/" de fin précise que l'on stocke en maildir
home_mailbox = Maildir/

Et puis:

# postfix reload

Un test (en local ou a partir d'un autre poste, dont le smtp est ce serveur).

$ echo TEST | mail -s TEST toto-pas-de-spam@tjaouen.fr

Et voila: le mail est livré dans le “Maildir” du compte.

smtp tls

But: chiffrement TLS sur port SMTP 25

Lien:

# cd /etc/ssl/private
# openssl genrsa 1024 > ssl-cert-smtp-thierry-jaouen-fr.key
# cd /etc/ssl/certs
# openssl req -new -key ../private/ssl-cert-smtp-thierry-jaouen-fr.key -x509 -days 3650 -out ssl-cert-smtp-thierry-jaouen-fr.pem

Remplir:

Country Name: FR
State or Province: France
Locality: Paris
Organisation Name: Thierry Jaouen
Organisation Unit Name: mail
Common Name: smtp.thierry-jaouen.fr
Email Address: postmaster_nospam@tjaouen.fr

On peut changer la conf de postfix dans main.cf :

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-smtp-thierry-jaouen-fr.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-smtp-thierry-jaouen-fr.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
# /etc/init.d/postfix restart

pop et imap

Ce que ne gère pas “postfix” !

pop3

Port par defaut: 110

:!: Aucun chiffrement
# cd /etc/courier
# egrep -v "^(#|$)" pop3d
PIDFILE=/var/run/courier/pop3d.pid
MAXDAEMONS=40
MAXPERIP=10
POP3AUTH="LOGIN CRAM-MD5 CRAM-SHA1"
POP3AUTH_ORIG="PLAIN LOGIN CRAM-MD5 CRAM-SHA1 CRAM-SHA256"
POP3AUTH_TLS=""
POP3AUTH_TLS_ORIG="LOGIN PLAIN"
POP3_PROXY=0
PORT=110
ADDRESS=0.0.0.0
TCPDOPTS="-nodnslookup -noidentlookup"
LOGGEROPTS="-name=pop3d"
POP3DSTART=YES
MAILDIRPATH=Maildir

imap

Port par defaut: 143

:!: Aucun chiffrement

Aucune modification:

# egrep -v "^(#|$)" imapd
ADDRESS=0.0.0.0
PORT=143
MAXDAEMONS=40
MAXPERIP=20
PIDFILE=/var/run/courier/imapd.pid
TCPDOPTS="-nodnslookup -noidentlookup"
LOGGEROPTS="-name=imapd"
IMAP_CAPABILITY="IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE"
IMAP_KEYWORDS=1
IMAP_ACL=1
IMAP_CAPABILITY_ORIG="IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA AUTH=CRAM-MD5   AUTH=CRAM-SHA1 AUTH=CRAM-SHA256 IDLE"
IMAP_PROXY=0
IMAP_PROXY_FOREIGN=0
IMAP_IDLE_TIMEOUT=60
IMAP_MAILBOX_SANITY_CHECK=1
IMAP_CAPABILITY_TLS="$IMAP_CAPABILITY AUTH=PLAIN"
IMAP_CAPABILITY_TLS_ORIG="$IMAP_CAPABILITY_ORIG AUTH=PLAIN"
IMAP_DISABLETHREADSORT=0
IMAP_CHECK_ALL_FOLDERS=0
IMAP_OBSOLETE_CLIENT=0
IMAP_UMASK=022
IMAP_ULIMITD=131072
IMAP_USELOCKS=1
IMAP_SHAREDINDEXFILE=/etc/courier/shared/index
IMAP_ENHANCEDIDLE=0
IMAP_TRASHFOLDERNAME=Trash
IMAP_EMPTYTRASH=Trash:7
IMAP_MOVE_EXPUNGE_TO_TRASH=0
SENDMAIL=/usr/sbin/sendmail
HEADERFROM=X-IMAP-Sender
IMAPDSTART=YES
MAILDIRPATH=Maildir

pop3s

Port par defaut: 995

# egrep -v "^(#|$)" pop3d-ssl 
SSLPORT=995
SSLADDRESS=0.0.0.0
SSLPIDFILE=/var/run/courier/pop3d-ssl.pid
SSLLOGGEROPTS="-name=pop3d-ssl"
POP3DSSLSTART=YES
POP3_STARTTLS=YES
POP3_TLS_REQUIRED=0
COURIERTLS=/usr/bin/couriertls
TLS_STARTTLS_PROTOCOL=TLS1
TLS_KX_LIST=ALL
TLS_COMPRESSION=ALL
TLS_CERTS=X509
TLS_CERTFILE=/etc/courier/ssl-key-pop3-tjaouen-fr.pem
TLS_TRUSTCERTS=/etc/ssl/certs
TLS_VERIFYPEER=NONE
TLS_CACHEFILE=/var/lib/courier/couriersslcache
TLS_CACHESIZE=524288
MAILDIRPATH=Maildir

Je ne touche a rien de pop3d.cnf.

# cd /etc/ssl/private
# openssl genrsa 1024 > ssl-cert-pop3-tjaouen-fr.key
# cd /etc/ssl/certs
# openssl req -new -key ../private/ssl-cert-pop3-tjaouen-fr.key -x509 -days 3650 -out ssl-cert-pop3-tjaouen-fr.pem

… fournir les champs …

Exemple:

...
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:  
Locality Name (eg, city) []:Paris         
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Thierry JAOUEN
Organizational Unit Name (eg, section) []:mail
Common Name (eg, YOUR name) []:pop.thierry-jaouen.fr
Email Address []:postmaster<nospam>@tjaouen.fr

et puis:

# openssl gendh >> ssl-cert-pop3-tjaouen-fr.pem

et puis, on va là ou son les certificats “courier” :

# cd /etc/courier

… on va tout mettre dans un seul fichier ”.pem” :

# cp /etc/ssl/private/ssl-cert-pop3-tjaouen-fr.key ssl-key-pop3-tjaouen-fr.pem
# cat /etc/ssl/certs/ssl-cert-pop3-tjaouen-fr.pem >> ssl-key-pop3-tjaouen-fr.pem
# chmod 0600 ssl-key-pop3-tjaouen-fr.pem
# chown root: ssl-key-pop3-tjaouen-fr.pem

Dans le fichier /etc/courier/pop3-ssl :

...
# TJ -------------
#TLS_CERTFILE=/etc/courier/pop3d.pem
TLS_CERTFILE=/etc/courier/ssl-key-pop3-tjaouen-fr.pem
# ----------------

Et puis:

/etc/init.d/courier-pop-ssl restart

On peut arreter le daemon “pop3” : trop hasardeux de laisser un service sans chiffrement.

DISABLE pop3

# vi /etc/courier/pop3d
# TJ ------------
#POP3DSTART=YES
POP3DSTART=NO
# ---------------
# /etc/init.d/courier-pop stop

Voila

imaps

Faire comme pour le “pop” (en adaptant les noms de fichiers bien sur!)

problemes

filesystem ...

Lien: http://www.tutorialnut.com/index.php/2010/05/18/quick-fix-filesystem-notification-initialization-error-contact-your-mail-administrator-check-for-configuration-errors-with-the-famgamin-library/

Thunderbird dit:

Filesystem notification initialization error -- contact your mail administrator (check for configuration errors with the FAM/Gamin library) 

Voir le lien ci-dessus.

SMTP authentifié

Installer

# aptitude install sasl2-bin

On voit :

...
To enable saslauthd, edit /etc/default/saslauthd and set START=yes (warning).
...

D'apres la doc : /usr/share/doc/sasl2-bin/README.Debian.gz

On utilise un postfix “chrooter” ? (je suppose que oui)

  • Donc il faut creer une socket “mux” dans son environnement “chroot”
  • faire bien ca en en causant avec “dpkg-statoverride”
  • ajouter le user “postfix” dans le groupe “sasl”

En pratique:
Pour mettre la socket saslauthd dans le chroot Postfix, editer /etc/default/saslauthd et fixer OPTIONS comme cela (vous pouvez omettre -c):

OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"

Et aussi, mettre/modifier:

# TJ -----------
#START=no
START=yes
# --------------

“To set the run directory using dpkg-statoverride, run this command as root” :

# dpkg-statoverride --add root sasl 710 /var/spool/postfix/var/run/saslauthd

(J'ai aussi vu: dpkg-statoverride –force –update –add root sasl 755 /var/spool/postfix/var/run/saslauthd mais pas dans la doc du package)

Et pour finir, ajouter le user Postfix au groupe sasl :

# adduser postfix sasl

Les lib sasl sont là:

/usr/lib/sasl2/

… et c'est bien. Par defaut, on a dans la conf:

# postconf -d | grep smtpd_sasl
smtpd_sasl_auth_enable = no
smtpd_sasl_authenticated_header = no
smtpd_sasl_exceptions_networks =
smtpd_sasl_local_domain =
smtpd_sasl_path = smtpd
smtpd_sasl_security_options = noanonymous
smtpd_sasl_tls_security_options = $smtpd_sasl_security_options
smtpd_sasl_type = cyrus

et c'est globalement bien (sauf que c'est encore disable), et notamment:

smtpd_sasl_path = smtpd
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = cyrus

La conf du daemon “sasl” doit être dans :

/etc/postfix/sasl/smtpd.conf

… ce qui est en adéquation avec ça:

# postconf -d | grep smtpd_sasl_path
smtpd_sasl_path = smtpd

Donc, dans /etc/postfix/sasl/smtpd.conf on a :

pwcheck_method: saslauthd
saslauthd_path: /var/run/saslauthd/mux
mech_list: login plain
:!: le parametre “saslauthd_path” est relatif au chroot.
:!: faire pointer “saslauthd_path” sur la socket “mux” !!! (et non pas le répertoire! grrr…)

Et enfin, enfin :

# /etc/init.d/saslauthd start

(parce que le daemon n'avait pas encore demarré …)

Curieusement: nul besoin de creer “var/run/saslauthd” dans “/var/spool/postfix” … ca doit être fait pas “saslauthd” (bah oui banane!)

Tester

# testsaslauthd -u <user> -p <password> -f /var/spool/postfix/var/run/saslauthd/mux

Si Ok:

0: OK "Success."

Sinon:

0: NO "authentication failed"
:!: Eviter de créer un compte test avec le mot de passe test (ou autres evidences) .
En moins de 24h, ce compte sera exploité par des intrus !!! (Expérience vécu! lol)

Postfix

Pour la configuration de Postfix…

Par defaut, Postfix est prêt a causer avec “Cyrius” (on la vu plus haut): c'est bien.

Bug avec certains clients Outlook: ( lien: http://www.postfix.org/SASL_README.html ) . Dans ce cas, prévoir d'ajouter dans /etc/postfix/main.cf :

broken_sasl_auth_clients = yes

… ce que je fais, puisque dixit la doc: ca ne casse rien pour les autres clients.

Mais surtout, il faut activer le SASL dans /etc/postfix/main.cf :

############################
# SASL
# smtp authentifié
############################
smtp_sasl_auth_enable = no
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $mydomain
unknown_local_recipient_reject_code = 450
smtpd_recipient_restrictions =
      permit_mynetworks,
      permit_sasl_authenticated,
      reject_unauth_destination

broken_sasl_auth_clients = yes

… et dans aussi :

# avec SASL devient:
smtpd_client_restrictions =
      permit_mynetworks,
      permit_sasl_authenticated

Installer les modules qui vont bien:

# aptitude install libsasl2-modules

Et enfin:

# postfix reload

Sinon: Oups: ca marche pas !

... ns postfix/smtpd[9916]: warning: xsasl_cyrus_server_get_mechanism_list: no applicable SASL mechanisms
... ns postfix/smtpd[9916]: fatal: no SASL authentication mechanisms

On test vite:

$ telnet 0 25

On tape:

EHLO titi.localdomain

On devrait voir la ligne:

...
250-AUTH PLAIN LOGIN
...

… ainsi que 250-AUTH=PLAIN LOGIN , si on a appliqué le broken_sasl_auth_clients = yes vu plus haut.

Si ca ne marche toujours pas:

... ns postfix/smtpd[4367]: warning: SASL authentication failure: cannot connect to saslauthd server: Permission denied

Verifier que saslauthd_path (dans sasl/smtpd.conf) pointe bien sur la socker “mux”, que les droits sont corrects, et que “postfix” est dans le groupe “sasl”.

Quand ca marche:

... ns postfix/smtpd[6880]: 8EE724FF1D: client=milf94-7-xxxxx.livebox.net[xxxxxx], sasl_method=PLAIN, sasl_username=xxxxx@tjaouen.fr

spam

FIXME

postgrey

Lien: http://www.system-linux.eu/index.php?post/2010/03/31/postgrey-liste-pour-Postfix

Mais je ne le ferais pas, parce que mon serveur mail est tout petit…

spamassassin

installer

# aptitude install spamassassin

(ce qui installe aussi “spamc” en passant)

spamc

“spamc” devra etre executé en un équivalent de “nobody”, et avec une home.

On va donc faire:

# adduser spamc-nobody --system --ingroup nogroup --disabled-login

Verifions:

# id spamc-nobody
uid=103(spamc-nobody) gid=65534(nogroup) groupes=65534(nogroup)

Le répertoire /home/spamc-nobody pourra servir par la suite a d'autres fins.

Dans les logs, cette avertissement:

Mar 12 00:13:10 mailmachine spamc[8725]: skipped message, greater than max message size (512000 bytes)

On peut augmenter la limite en creant, ou modifiant le fichier: /etc/spamassassin/spamc.conf

# TJ ---------------------
-s 1024000
# ------------------------

spamassassin

Activer le daemon dans /etc/default/spamassassin

# Change to one to enable spamd
# TJ -----------
#ENABLED=0
ENABLED=1
# --------------
...
# TJ -----------
#OPTIONS="--create-prefs --max-children 5 --helper-home-dir"
OPTIONS="--create-prefs --max-children 5 --helper-home-dir --ipv4only"
# --------------
...

et puis:

# /etc/init.d/spamassassin start
:!: le répertoire /home/spamc-nobody/.spamassassin/ se peuple…

postfix

Modifier le fichier /etc/postfix/master.cf pour avoir:

# TJ ------------

spamassassin    unix    -       n       n       -       -       pipe
   user=spamc-nobody argv=/usr/bin/spamc -f -e
   /usr/sbin/sendmail -oi -f ${sender} ${recipient}

smtp      inet  n       -       -       -       -       smtpd
        -o content_filter=spamassassin
        -o smtpd_client_connection_count_limit=60
        -o smtpd_authorized_xforward_hosts=127.0.0.0/8

# ---------------

# TJ ----------
#smtp      inet  n       -       -       -       -       smtpd
# -------------

… sans oublier de mettre en commentaire la ligne ci-dessus.

Dans main.cf ajouter une ligne comme cela:

spamassassin_destination_recipient_limit = 1

Sinon, lorsque spamc doit traiter beaucoup de destinataire, il va caler avec ce message:

... local configuration error. Command output: Exceeded max number of arguments (24) in /etc/spamassassin/spamc.conf

La limite de “24” est en dur dans le source… et doit être vraissemblablement respecté.

 
# postfix reload

Dans les logs (entre autres choses):

... mail postfix/pipe[5345]: 739CB6C0DF: to=<NOSPAM@tjaouen.fr>, relay=spamassassin, delay=2, delays=0.04/0.02/0/2, dsn=2.0.0, status=sent (delivered via spamassassin service)

Dans les sources des messages passé par spamassassin:

X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on
mail.thierry-jaouen.local
X-Spam-Level: 
X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham
version=3.3.1
:!: A ce stade: il reste encore des trucs a personnaliser !

spamassassin configuration

général

Personnaliser a minima:

Dans /etc/spamassassin/local.cf :

rewrite_header Subject [SPAM]
report_safe 1
trusted_networks <VOTRE_RESEAU>
# Exemple: trusted_networks 192.168.0.
required_score 5.0
ok_languages    fr
ok_locales      all
add_header      all Checker-Version SpamAssassin _VERSION_ (_SUBVERSION_) sur _HOSTNAME_

Dans /etc/spamassassin/v310.pre :

loadplugin Mail::SpamAssassin::Plugin::TextCat
# /etc/init.d/spamassassin reload

bayes

Deja actif par defaut, voir dans /home/spamc-nobody/.spamassassin/ et aussi dans les entêtes des mails.

J'ai quand même ça dans local.cf :

use_bayes 1
bayes_auto_learn 1
bayes_ignore_header X-Bogosity
bayes_ignore_header X-Spam-Flag
bayes_ignore_header X-Spam-Status

pizor

Lien: http://wiki.apache.org/spamassassin/UsingPyzor

# aptitude install pyzor

On va installer pyzor dans l'environnement “spamc-nobody”

# su -s "/bin/bash" spamc-nobody
$ pyzor discover

Un repertoire “.pyzor” est créé dans /home/spamc-nobody/

Dans /etc/spamassassin/local.cf :

use_pyzor       1

Verifier aussi le chargement du module dans v310.pre

Et enfin:

# /etc/init.d/spamassassin reload
:!: Ca fonctionne , et ca ne laisse une trace dans les entetes que lorsque “pyzor” a trouvé quelque chose

Exemple:

 1.4 PYZOR_CHECK            Message listé par Pyzor, voir http://pyzor.sf.net/

razor

Lien: http://wiki.apache.org/spamassassin/InstallingRazor?highlight=%28%28UsingRazor%29%29

# aptitude install razor

Lien: http://www.raygibson.net/kb/amavis/

# su -s "/bin/bash" spamc-nobody
$ razor-admin -d -create -home=/home/spamc-nobody/.razor
$ razor-admin -d -register 

Dans local.cf , j'ai :

...
# Razor
use_razor2      1

score RAZOR2_CHECK      2.500

Verifier aussi le chargement du module dans v310.pre

Et enfin:

# /etc/init.d/spamassassin reload
LOG

Ajouter le traitement de la rotation des log de /home/spamc-nobody/.razor/razor-agent.log … par exemple dans /etc/logrotate.d/razor :

/var/log/razor-agent.log /home/spamc-nobody/.razor/razor-agent.log {
      weekly
      rotate 3
      compress
      nomail
      notifempty
      missingok
}

dcc

Il faut installer des trucs !

Pré-requis (squeeze?):

# aptitude install libmilter-dev
$ cd /usr/local/src/
$ wget http://www.rhyolite.com/anti-spam/dcc/source/dcc.tar.Z
$ tar xvzf dcc.tar.Z
$ cd dcc-1.3.131
$ ./configure
$ make
$ su
# make install

Le binaire cdcc se retrouve la: /usr/local/bin/cdcc Ainsi que: /usr/local/bin/dccproc

Mais ca ne suffit pas ! Dans /etc/spamassassin/local.cf bien ajouter:

use_dcc         1
add_header      all DCC _DCCB_: _DCCR_

S'il n'y a pas “add_header”, alors bien que le test soit fait, il n'est pas enregistré dans les entêtes.

:!: En fait, ca ne semble pas fonctionner ! avec “spamd” il faut préciser le chemin vers “dccproc” :

# which dccproc
/usr/local/bin/dccproc

et ajouter dans local.cf

dcc_path /usr/local/bin/dccproc

Source: http://wiki.apache.org/spamassassin/UsingDcc

Ne pas oublier de d'avoir dans v310.pre :

loadplugin Mail::SpamAssassin::Plugin::DCC
# /etc/init.d/spamassassin reload

un petit test montre dans les entête mails:

X-Spam-DCC: dcc1.aftenposten.no: mail 1215; Body=1 Fuz1=1 Fuz2=1

Ca marche !

LOG

Si vous avez un serveur mail fortement sollicité, vous aurez sans doute le repertoire /var/dcc/log remplit de log (et autres?).

Il faut executer chaque jour le script: /var/dcc/libexec/cron-dccd

Ainsi, dans le cron, ajouter par exemple:

15 2  *  *  *  /var/dcc/libexec/cron-dccd

language

Un peu trop sévere pour les langues etrangeres…

Donc editer le fichier “local.cf” et mettre:

# TextCat
score UNWANTED_LANGUAGE_BODY 0.500

ClamAV ou ClamSMTP

Installer

Lien: http://www.moroblog.info/Securiser-Postfix-avec-Amavis-et.html

Clamav et postfix: http://www.debian-administration.org/articles/259

# aptitude install clamsmtp clamav-freshclam

Oups ?
Attention : le répertoire personnel « /var/spool/clamsmtp » que vous avez indiqué n'est pas accessible : Aucun fichier ou répertoire de ce type

Lien: http://www.ubuntuupdates.org/packages/show/172206

Ca n'a pas d'incidence par la suite.

Oups 2 ?

LibClamAV Warning: **************************************************
LibClamAV Warning: ***  The virus database is older than 7 days!  ***
LibClamAV Warning: ***   Please update it as soon as possible.    ***
LibClamAV Warning: **************************************************

lol?

Postfix

A savoir: la conf par defaut de “ClamSMTP” dit:
clamsmtp ecoute sur le port 10026 et renvoi le mail traité par le port 10025.

Ce qu'on peut bien croire en voyant ça:

# netstat -anp | grep clam
tcp        0      0 127.0.0.1:10026         0.0.0.0:*               LISTEN      2140/clamsmtpd

Dans /etc/postfix/main.cf ajouter:

# TJ ------------
# clamav via clamsmtp
# source: /usr/share/doc/clamsmtp/postfix.html

content_filter = antivirus:127.0.0.1:10026
receive_override_options = no_address_mappings

Dans /etc/postfix/master.cf faire les modifs:

# TJ ------------
# ANTIVIRUS clamav
# AV scan filter (used by content_filter)
# (renommer "antivirus")

antivirus    unix  -       -       n       -       32      smtp
      -o smtp_send_xforward_command=yes

# For injecting mail back into postfix from the filter
127.0.0.1:10025 inet  n       -       n       -       -       smtpd
      -o content_filter=
      -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
      -o smtpd_helo_restrictions=
      -o smtpd_client_restrictions=
      -o smtpd_sender_restrictions=
      -o smtpd_recipient_restrictions=permit_mynetworks,reject
      -o mynetworks_style=host
      -o smtpd_authorized_xforward_hosts=127.0.0.0/8
# postfix reload

On n'a bien “master” (de Postfix) qui ecoute le port 10025:

# netstat -anp | egrep "^tcp.*master"
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      23620/master    
tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      23620/master

Test

Test avec ce fichier en piece jointe…

(Ce n'est pas un virus, mais le fichier va faire réagir l'antivirus comme si il en était un.)

Test entre 2 comptes locaux.

Dans les logs:

Jun  7 13:00:47 mail postfix/cleanup[2177]: B253E6C0F4: message-id=<4DEE04C6.8010405@tjaouen.fr>
Jun  7 13:00:47 mail postfix/qmgr[2164]: B253E6C0F4: from=<xxxxNOSPAM@tjaouen.fr>, size=1654, nrcpt=1 (queue active)
Jun  7 13:00:47 mail clamsmtpd: 100000: accepted connection from: 127.0.0.1
Jun  7 13:00:47 mail postfix/smtpd[2186]: connect from localhost[127.0.0.1]
Jun  7 13:00:47 mail postfix/smtpd[2186]: DCA7F6C0F5: client=localhost[127.0.0.1]
Jun  7 13:00:47 mail spamd[32545]: prefork: child states: II
Jun  7 13:00:48 mail postfix/smtp[2184]: B253E6C0F4: to=<yyyyNOSPAM@tjaouen.fr>, relay=127.0.0.1[127.0.0.1]:10026, delay=0.3, delays=0.03/0.06/0.11/0.11, dsn=2.0.0, status=sent (250 Virus Detected; Discarded Email)
Jun  7 13:00:48 mail postfix/qmgr[2164]: B253E6C0F4: removed
Jun  7 13:00:48 mail clamsmtpd: 100000: from=xxxxNOSPAM@tjaouen.fr, to=yyyyNOSPAM@tjaouen.fr, status=VIRUS:Eicar-Test-Signature
Jun  7 13:00:48 mail postfix/smtpd[2186]: disconnect from localhost[127.0.0.1]

ca marche aussi si le virus est envoyé de l'exterieur de notre reseau.

submission

Lien: http://wiki.auf.org/wikiteki/Postfix/Authentification

L'avenir du port 25, c'est le port “submission”.

Il permet aux clients authentifiés de livrer des mails.

Le port 25 reste en usage, mais seulement pour les clients non authentifiés, comme les clients/serveurs qui livrent les mails.

Port 587 pour le smtp, mais qui est forcement crypté.

Il ne faut pas oublier de faire passer les mails via spamassassin (et autres modules, si existant)…

Pour le serveur final

Dans master.cf , par exemple:

# source: http://wiki.auf.org/wikiteki/Postfix/Authentification
# TJ ---------
# port 587
# source: http://wiki.auf.org/wikiteki/Postfix/Authentification
submission inet n       -       -       -       -       smtpd
      -o smtpd_tls_security_level=encrypt
      -o smtpd_sasl_auth_enable=yes

On force l'encrytage et l'authentification “sasl”.

# postfix reload

Pour un "frontal" (en relay)

Dans master.cf , par exemple:

# TJ ---------
# port 587
# source: http://wiki.auf.org/wikiteki/Postfix/Authentification
submission inet n       -       -       -       -       smtpd
      -o smtpd_tls_security_level=encrypt
      -o content_filter=spamassassin
      -o smtpd_client_connection_count_limit=60
      -o smtpd_authorized_xforward_hosts=127.0.0.0/8
# ------------

Remarqué le “smtpd_tls_security_level=encrypt” qui force le chiffrement.

# postfix reload

Anti-Spam en sortie

serveur_postfix2.1332242744.txt.gz · Dernière modification: 2012/03/20 12:25 par thierry