Le courrier électronique, aussi simple soit-il à
utiliser, repose sur un fonctionnement plus compliqué que
celui du web. Pour la plupart des utilisateurs son fonctionnement est
transparent, ce qui signifie qu'il n'est pas nécessaire de
comprendre comment le courrier électronique fonctionne pour
pouvoir l'utiliser.
I.Principes de SMTP/POP3/IMAP 2
1.Introduction 2
2.Envoi d'un
mail 2
3.Contenu d'un
mail 3
a)Entête 3
b)Corps 3
c)Enveloppe 3
4.Mails sortants 4
a)Principe 4
b)Exemple de session
SMTP 4
5.Réception
du courrier 5
a)Introduction 5
b)Le protocole
POP3 6
c)Exemple de session
POP 6
d)Le protocole
IMAP 7
e)Exemple de session
IMAP 8
6.Interaction du
mail avec le DNS 9
II.Configurer Sendmail 10
1.Installation 10
2.Configuration 10
3.Envoyer un mail
avec Sendmail 11
4.Test de règles
de réécriture 11
5.Fichier d'alias
et mailing list 12
6.Masquerading 12
7.Adresses
d'utilisateurs virtuels 13
8.Retransmission
de mails sans le Smart Host 14
9.Renvoi de mails
d'un serveur à un autre 14
10.Prise en compte
des modificiations 14
11.Relai
sécurisé 14
12.Contrôle
d'accès SMTP : /etc/mail/access 15
13.Anti-spam 16
14.Antivirus 17
a)Configuration 18
b)Intégration
aux serveur mails 18
1Sendmail 18
15.Authentification
SMTP 19
a)Installation 19
b)Configuration 19
c)Obliger les
connexions authentifiées 20
d)Interdire
EXPN/VRFY sauf pour les utilisateurs authentifiés 20
e)Utiliser Sendmail
pour relayer ou envoyer du courrier par SMTP AUTH 21
16.SMTP TLS : SMTP
sécurisé 21
a)Configuration 21
b)Test 22
c)Obliger les
connexions sécurisées pour l'authentification
textuelle 22
17.PGPSendmail 22
III.Serveur POP/IMAP : dovecot 22
1.Installation 22
2.Configuration 23
3.Lancement de
dovecot 24
4.Configuration de
Dovecot over SSL 24
Génération
de certificats avec dovecot 24
IV.Et iptables dans tout ça 25
V.Bibliographie 25
I.Principes de SMTP/POP3/IMAP
1.Introduction
Le
système de courrier électronique s'appuie sur
plusieurs composantes formant ainsi des modules, qui coopèrent
les uns avec les autres. Cette architecture permet une grande
souplesse, par exemple, le remplacement d'un seul module par un
élément plus récent suffit à faire
évoluer le système de courrier électronique. Les
composantes sont au nombre de quatre :
Mail
Transfer Agent (MTA) : il s'agit de la gestion de SMTP
(sendmail/postfix)
Mail
Delivery Agent (MDA) : il s'agit de la gestion de la récupération
depuis le stockage : POP/IMAP (dovecot/procmail/sendmail)
Boîte
aux lettres : il s'agit de la gestion du stockage à
l'arrivée des mails
Mail
User Agent (MUA) : il s'agit de l'outils qui vous permet de lire
vos mails : mail, fetchmail, mutt
2.Envoi d'un mail
Le
processus d'envoi d'un mail est le suivant :
le
MUA du client, càd Outlook par exemple, contacte le
MTA/serveur SMTP dont il trouve le nom dans sa configuration et lui
envoit le mail ainsi que l'adresse du ou des destinataires.
Le
MTA/serveur SMTP contacte les MTA de tous les destinataires en
regardant les domaines DNS des emails des destinataires et en
demandant au DNS des domaines le nom des MX.
Les
MTA peuvent à leurs tours contacter d'autres MTA internes.
Les
MTA contactent le MDA/serveur POP/IMAP pour stocker les mails pour
les utilisateurs destinataires.
Les
destinataires lisent leur messages avec leur MUA favoris, comme
Outlook depuis les MDA qu'ils

3.Contenu d'un mail
a)Entête
Cette
partie contient toutes les informations qui vont permettre au
courrier électronique d'être acheminé jusqu'à
son destinataire. Chaque ligne de l'en-tête est composée
de
mot-clé
: arguments
Reply-to:
adresse email de réponse
Received:
MTA intermédiaires
Date:
date d'envoi
From:
email émetteur
To:
email destinataire
Cc:
Copie(s) à
Bcc:
Copie(s) cachée(s) à
Subject:
sujet du mail
b)Corps
Cette
partie contient les données du courrier électronique.
Il s'agit de texte, codé soit sur 7 bits (protocole SMTP :
Simple Mail Transfer Protocol) ce qui interdit l'utilisation des
caractères accentués, soit sur 8 bits (protocole ESMTP
: Extended Simple Mail Protocol) et dans ce dernier cas, le problème
précédent ne se pose plus.
c)Enveloppe
Il
convient donc de véhiculer une nouvelle information avec un
message. Cette information par analogie avec la poste, s'appelle
l'enveloppe. Elle sert à router les messages.
Relai
ouvert
A l'origine, les systèmes SMTP ne sont pas
prévus pour demander une authentification. Cependant, dans ce
cas, il est simple de se faire passer pour un autre. C'est pour cela
que les FAI autorisent seulement la plage d'IP de leurs abonnés.
Lorsque le serveur de messagerie d'une organisation
est mal configurée et permet à des personnes
appartenant à des réseaux quelconques d'envoyer des
courriers électronique, on parle alors de relais ouvert
(en anglais open relay). Ceux sont en général,
les sources de SPAM.
4.Mails sortants
a)Principe
SMTP
signifie Simple Mail Transfert Protocol. Il s'agit donc du
protocole de transfert de courrier électronique le plus
basique, aussi bien dans ses spécificités que dans son
utilisation. Tout envoi de courrier électronique commence par
l'établissement d'un canal de communication entre les deux
correspondants que sont l'expéditeur et le destinataire.
SMTP est un protocole application, au dessus de la couche Transport
TCP.
Après
l'ouverture du canal, des commandes spécifiques permettent
de traiter le courrier à envoyer, mais il existe aussi un
certain nombre de commandes qui effectuent des actions propres au
suivi de la communication entre les deux entités.
Chaque
commande invoquée est suivie d'une réponse, composée
d'un code numérique, et d'un message. Par exemple, le code
numérique « 250 » est utilisé pour
signifier « OK », tandis que « 500 »
signifiera « commande inconnue ».
b)Exemple de session SMTP
Voici
un exemple de session SMTP :
[machine]$
telnet serveur 25
Trying
x.y.z.w...
Connected
to serveur.
Escape
character is '^]'.
220
serveur ESMTP Sendmail 8.11.2/8.11.2; Thu, 3 Jan 2004 13:52:55
+0100
HELO
serveur
250
serveur Hello machine [x.y.z.w], pleased to meet
you
HELP
214-2.0.0
This is sendmail version 8.11.2
214-2.0.0
Topics:
214-2.0.0
HELO EHLO MAIL RCPT DATA
214-2.0.0
RSET NOOP QUIT HELP VRFY
214-2.0.0
EXPN VERB ETRN DSN AUTH
214-2.0.0
STARTTLS
214-2.0.0
For more info use "HELP <topic>".
214-2.0.0
To report bugs in the implementation send email to
214-2.0.0
sendmail-bugs@sendmail.org.
214-2.0.0
For local information send email to Postmaster at your site.
214
2.0.0 End of HELP info
MAIL
FROM: emetteur@domaine.fr
250
2.1.0 emetteur@domaine.fr... Sender ok
RCPT
TO: <destinataire>
250
2.1.5 <destinataire>... Recipient ok
DATA
354
Enter mail, end with "." on a line by itself
Subject:
Essai de mail
Ceci
est le corps du message ...
.
250
2.0.0 g03CsNl07973 Message accepted for delivery
NOOP
250
2.0.0 OK
QUIT
221
2.0.0 serveur closing connection
Connection
closed by foreign host.
[machine]$
Exemple
de session ESMTP
Voici
un exemple de session ESMTP :
[machine]$
telnet serveur 25
Trying
x.y.z.w...
Connected
to serveur.
Escape
character is '^]'.
220
serveur ESMTP Sendmail 8.11.2/8.11.2; Thu, 3 Jan 2004 14:00:03
+0100
ehlo
serveur
250-serveur
Hello machine [x.y.z.w], pleased to meet you
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-SIZE
5000000
250-DSN
250-ONEX
250-ETRN
250-XUSR
250
HELP
MAIL
FROM: emetteur@domaine.fr
250
2.1.0 emetteur@domaine.fr... Sender ok
RCPT
TO: <destinataire>
250
2.1.5 <destinataire>... Recipient ok
DATA
354
Enter mail, end with "." on a line by itself
message
...
.
250
2.0.0 g03D1tl10892 Message accepted for delivery
QUIT
221
2.0.0 serveur closing connection
Connection
closed by foreign host.
[machine]$
5.Réception du courrier
a)Introduction
POP
: Post Office Protocol
IMAP
: Internet Message Access Protocol
Le
protocole POP est le plus ancien et le plus largement répandu.
Très simple, il possède environ une dizaine de
commandes alors que le protocole IMAP est plus récent et
propose plus de
fonctionnalités
que POP.
Si
on utilise une connexion POP pour lire ses messages, on récupère
les courriers directement sur un serveur POP qui les stocke pour
l'utilisateur (serveur du fournisseur d'accès par exemple). On
peut également laisser une copie des courriers sur le serveur
POP, pour pouvoir être ensuite récupérés
d'un autre endroit.
Si
on utilise une connexion IMAP, on consulte directement la boîte
aux lettres à distance, ce qui permet d'en avoir une seule et
unique copie, où que l'on soit dans le monde.
b)Le protocole POP3
Ce
protocole est défini par la RFC1939. Généralement,
ce protocole est utilisé en mode offline, c'est à dire
que le client ramène dans sa boite aux lettres locale son
courrier stocké sur le serveur depuis sa dernière
relève. Le courrier est alors lu après l'avoir
rapatrié, hors connection, en local. Lorsque le client
souhaite effacer son courrier, il doit rendre un "flag" de
suppression actif pour le message ç supprimer. C'est seulement
à la fin de la connexion, que le courrier ainsi marqué
sera effacé du disque du serveur. Par contre, il n'y a qu'une
seule boite aux lettres sur le serveur.
En
général, le serveur POP écoute le port 110 de la
machine.
La
syntaxe des commandes du protocole POP est la suivante:
[
commande ] [ argument ] [ argument ] ( retour chariot )
Les
commandes peuvent être :
USER
: prend comme argument le nom de l'utilisateur qui veut se connecter
à sa boite aux lettres.
PASS
: prend comme argument le mot de passe du client qui veut se
connecter.
STAT
: pas d'argument, affiche le nombre de messages de la boite aux
lettres et sa taille.
LIST
: si il n'y a pas d'argument, affiche pour chaque message son numéro
et sa taille, sinon ne le fait que pour le message passé en
argument.
RETR
: prend en argument le numéro du message que l'on veut
rapatrier.
DELE
: prend en argument le numéro du message que l'on souhaite
effacer.
NOOP
: ne rien faire...mais prouve que l'on n'est pas planté
RSET
: permet de retirer tous les drapeaux "effacés".
QUIT
: pas d'argument, permet de quitter la connexion en cours.
Les
réponses retournent +OK en début de ligne si tout ce
passe bien sinon retournent - ERR en
cas
de problème.
c)Exemple de session POP
[utilisateur]$
telnet serveur 110
Trying
x.y.z.w...
Connected
to serveur.
Escape
character is '^]'.
+OK
POP3 Welcome to GNU POP3 Server Version 0.9.8
<11965.1010143243@serveur>
USER
utilisateur
+OK
PASS
motdepasse
+OK
opened mailbox for utilisateur
STAT
+OK
1 369
LIST
1
+OK
1 369
RETR
1
+OK
Return-Path:
<utilisateur@domaine.fr>
Received:
(from nom@machine)
by serveur
(8.11.2/8.11.2) id g04BKZJ10755
for utilisateur;
Fri, 4 Jan 2002 12:20:35 +0100
Date:
Fri, 4 Jan 2002 12:20:35 +0100
From:
utilisateur@domaine.fr
Message-Id:
<200201041120.g04BKZJ10755@serveur>
To:
utilisateur2@domaine.fr
Subject:
Essai de mail
Bonjour
utilisateur
.
DELE
1
+OK
Message 1 marked
QUIT
+OK
Connection
closed by foreign host.
[utilisateur]$
d)Le protocole IMAP
Ce
protocole est définie par la RFC2060. Il permet la gestion de
plusieurs boites aux lettres sur plusieurs serveurs à partir
de plusieurs clients. Il permet également la consultation de
messages MIME. Le mode online supporté veut dire que le client
et le serveur sont connecté pendant toute la durée de
la manipulation du courrier électronique. Le client peut donc
consulter son courrier en restant connecté.
De
ce fait, on peut créer toute une arborescence de boites aux
lettres à partir de la principale (inbox). Par exemple,
l'utilisateur toto peut avoir des sous boites aux lettres, une
pour les messages personnels, une pour les message du travail, une
pour la cuisine, ....
La
syntaxe des commandes du protocole IMAP est la suivante:
[
tag ] [ commande ] [ argument ] [ argument ] ( retour chariot
)
Le
tag est un code alphanumérique que vous pouvez choisir à
votre guise. En générale, on utilise un code croissant
pour identifier temporellement les commandes.
Les
commandes principales sont:
LOGIN
: prend comme argument le nom et le mot de passe du client.
SELECT
: prend comme argument le nom de la boite que l'on veut
sélectionner.
CREATE
: le nom de la nouvelle boite est passée en argument.
DELETE
: efface la boite aux lettres qui est passée en argument.
RENAME
: prend comme argument le nom de l'ancienne boite et le nouveau.
LIST
: prend comme argument la référence (ex :
etc/mail/....) et le nom de la boite.
STATUS
: donne les informations sur une boite.
SEARCH
: commande qui permet de rechercher des messages selon des critères
spécifiques.
CLOSE
: pas d'argument, ferme la boite mais attend de nouveau un
login.
FETCH
: prend plusieurs arguments, permet de consulter un message
Le
serveur peut retourner plusieurs types de réponses:
tag
* OK : la commande c'est bien déroulée.
tag
* NO : échec de la commande.
BAD
: erreur de protocole.
PREAUTH
: message d'accueil, indique des fois qu'il n'est pas nécessaire
de se loger.
BYE
: le serveur va fermer sa session.
e)Exemple de session IMAP
[utilisateur]$
telnet serveur 143
Trying
x.y.z.w...
Connected
to serveur.
Escape
character is '^]'.
*
OK gip Cyrus IMAP4 v2.0.16 server ready
a001
LOGIN utilisateur motdepasse
a001
OK User logged in
a002
select inbox
*
FLAGS (\Answered \Flagged \Draft \Deleted \Seen)
*
OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen \*)]
*
7 EXISTS
*
1 RECENT
*
OK [UNSEEN 1]
*
OK [UIDVALIDITY 1004181443]
*
OK [UIDNEXT 3652]
a002
OK [READ-WRITE] Completed
a003
FETCH 7 FULL
*
7 FETCH (FLAGS (\Recent) INTERNALDATE " 4-Jan-2004 12:43:40
+0100" RFC822.SIZE
636
ENVELOPE ("Fri, 4 Jan 2004 12:43:40 +0100" "essai de
mail IMAP" ((NIL NIL
"utilisateur"
"domaine.fr")) ((NIL NIL "utilisateur"
"domaine.fr")) ((NIL NIL "utilisateur"
"domaine
.fr")) ((NIL NIL "destinataire"
"domaine2.fr")) NIL NIL NIL
"<200201041143.g04Bhe018099@domaine.fr>")
BODY ("TEXT" "PLAIN"
("CHARSET"
"us-ascii") NIL NIL "7BIT" 11 1))
a003
OK Completed
a004
FETCH 7 body
*
7 FETCH (BODY ("TEXT" "PLAIN" ("CHARSET"
"us-ascii") NIL NIL "7BIT" 11 1))
a004
OK Completed
a005
FETCH 7 BODY[TEXT]
*
7 FETCH (FLAGS (\Recent \Seen) BODY[TEXT] {11}
Voila
un message...
)
a005
OK Completed
a006
logout
*
BYE LOGOUT received
a006
OK Completed
Connection
closed by foreign host.
[utilisateur]$
6.Interaction du mail avec le DNS

L'envoie
de courrier à user@site peut se faire de deux façons:
la
première méthode consiste à contacter site et
de lui remettre le mail,
la
seconde consiste à délivrer le message à une
machine qui assurerait un service de poste centrale pour un groupe
de machine.
Si
la première méthode est simple à l'esprit à
mettre en oeuvre, il n'en est pas de même dans la réalité,
car elle nécessite la maintenance d'un MTA sur chaque
machine du réseau. C'est pour cela que dans la pratique, on
utilise généralement la deuxième méthode.
C'est
à ce niveau que le DNS intervient, car il permet de connaître
ces machines postales. Il est en effet capable de stocker dans sa
base de données ce type d'informations? Il s'agit en
l'occurrence des RR de type MX.
Au
lieu de contacter le DNS pour obtenir l'adresse IP de la machine
destinatrice, on va le contacter pour lui demander le MX de la
station destinatrice, puis l'adresse IP de cette dernière et
c'est à lui que sendmail se connectera pour transmettre le
message.
Dans
la pratique, l'utilisation d'un MX présente plusieurs
avantages :
Il
permet de joindre des machines en bordure de l'Internet (serveurs
mails) en spécifiant la passerelle vers ces machines, par
exemple une passerelle capable de communiquer en UUCP.
Mettre
le même MX pour toutes les stations d'un même domaine
permet de centraliser la distribution du courrier. On peut ainsi
fiabiliser la distribution en passant par une machine maintenue,
administrée et à jour qui distribue les courriers à
l'intérieur d'une entreprise. Le DNS, pour résumer
grossièrement, ne contient que des enregistrements de données
de type (clé, valeur). C'est ce qui permet ainsi d'envoyer
du courrier à un domaine en mettant simplement dans la base
le RR suivant :
domaine.fr
IN MX 10 serveur_courrier_entrant
Le
domaine domaine.fr a donc un MX et on peut donc utiliser
l'adresse (username)@domaine.fr qui dirigera les
courriers vers machine.domaine.fr.
On
peut indiquer plusieurs MXs dans le DNS, avec des priorités
différentes, ce qui permet d'assurer la continuité
du service du courrier électronique en cas de panne ( envoi
des mails vers les MXs secondaires ) et aussi d'éviter
l'inondation du MX principal lors de sa remise en marche. Ceci est
dû au fait que les mails en attente ne se présenteront
pas tous successivement à lui mais au contraire feront
l'objet d'une seule connexion SMTP de la part des MXs de secours
qui, selon le principe des MXs, retransmettent les mails au MX le
plus prioritaire.
domaine.fr
IN MX 10 machine1
domaine.fr
IN MX 20 machine2
Même
si un MX présente énormément d'intérêts,
on peut néanmoins trouver quelques limitations. En effet,
comme l'envoie de courrier passe automatiquement par le MX, cela
peut être coûteux en termes de performances ( passages
inutiles par des routeurs internes ) et le surcharger inutilement.
II.Configurer Sendmail
1.Installation
[root]#
apt-get install sendmail
2.Configuration
Dans le fichier /etc/mail/sendmail.mc
:
divert(-1)dnl
#
# This file contains definitions for my mailserver
#
divert(0)dnl
#inclusion pour le préprocesseur m4
include(`/usr/share/sendmail/cf/m4/cf.m4')dnl
#infos sur l'OS de du serveur mail
OSTYPE(`linux')dnl
# défini le serveur mail vers lequel renvoyer le courrier
# vers les
domaines que l'on ne gère pas
define(`SMART_HOST',`titan.prive.iut-amiens.fr')
#
rediriger le courrier
FEATURE(redirect)dnl
#
toujours ajouter le nom de domaine
#
s'il n'est pas spécifié par l'utilisateur
FEATURE(always_add_domain)dnl
#active
le fichier trusted-users :
#utilisateur
autorisé à se faire passer pour un autre
FEATURE(use_ct_file)dnl
#
accepter les maisl provenant de domaines
#
dont on ne peut pas vérifier le nom DNS
FEATURE(`accept_unresolvable_domains')dnl
#
écoute sur toutes les interfaces de la machine
DAEMON_OPTIONS(`Family=inet,
Name=MTA-v4, Port=smtp')dnl
#
défini le nom de la zone DNS dont on sert les mails
LOCAL_DOMAIN(`tp9-pc01.prive.iut-amiens.fr')dnl
#définir
le fichier des alias
define(`ALIAS_FILE',`/etc/mail/aliases')
#autoriser
Sendmail à recevoir le courrier en local
MAILER(local)
MAILER(procmail)
#et par le protocole SMTP
MAILER(smtp)
Commenter
(dnl) les lignes EXPOSED_USER et
DAEMON_OPTIONS
3.Envoyer un mail avec Sendmail
[user]#
/usr/sbin/sendmail user@domaine.tld
entête
du mail
contenu
du mail
4.Test de règles de réécriture
Pour tester le résultat du
traitement d'une adresse email pour vérifier qu'elle est bien
reconnue, vous pouvez essayer ceci, par exemple pour un mail au root
le plus proche (ce qui est en gras est à taper):
[user]$ /usr/sbin/sendmail -bt
ADDRESS
TEST MODE (ruleset 3 NOT automatically invoked)
Enter
<ruleset> <address>
>
/tryflags ES
>
/try smtp root
>
Trying envelope sender address root for mailer smtp
canonify
input: root
Canonify2
input: root
Canonify2
returns: root
canonify
returns: root
1
input: root
1
returns: root
EnvFromSMTP
input: root
PseudoToReal
input: root
PseudoToReal
returns: root
MasqSMTP
input: root
MasqSMTP
returns: root < @ *LOCAL* >
MasqEnv
input: root < @ *LOCAL* >
MasqHdr
input: root < @ *LOCAL* >
MasqHdr
returns: root < @ localhost . localdomain . >
MasqEnv
returns: root < @ localhost . localdomain . >
EnvFromSMTP
returns: root < @ localhost . localdomain . >
final
input: root < @ localhost . localdomain . >
final
returns: root @ localhost . localdomain
Rcode
= 0, addr = root@localhost.localdomain
>
/try smtp sharevb@sharevb.net
>
Trying envelope sender address sharevb@sharevb.net for mailer smtp
canonify
input: sharevb @ sharevb . net
Canonify2
input: sharevb < @ sharevb . net >
Canonify2
returns: sharevb < @ sharevb . net . >
canonify
returns: sharevb < @ sharevb . net . >
1
input: sharevb < @ sharevb . net . >
1
returns: sharevb < @ sharevb . net . >
EnvFromSMTP
input: sharevb < @ sharevb . net . >
PseudoToReal
input: sharevb < @ sharevb . net . >
PseudoToReal
returns: sharevb < @ sharevb . net . >
MasqSMTP
input: sharevb < @ sharevb . net . >
MasqSMTP
returns: sharevb < @ sharevb . net . >
MasqEnv
input: sharevb < @ sharevb . net . >
MasqHdr
input: sharevb < @ sharevb . net . >
MasqHdr
returns: sharevb < @ sharevb . net . >
MasqEnv
returns: sharevb < @ sharevb . net . >
EnvFromSMTP
returns: sharevb < @ sharevb . net . >
final
input: sharevb < @ sharevb . net . >
final
returns: sharevb @ sharevb . net
Rcode
= 0, addr = sharevb@sharevb.net
>
/quit
5.Fichier d'alias et mailing list
On peut donner des alias au noms des
utilisateurs locaux ou créer des mailing list.
Dans le fichier /etc/aliases
:
Exécuter la commande newaliases
après chaque modification du fichier /etc/aliases.
6.Masquerading
Le masquerading est le fait de changer
le nom de domaine sortant à l'envoi du mail. Cela permet de
changer un nom de domaine qui n'existe pas sur internet. Par exemple,
si l'on a un domaine gestion.domaine.fr
et que seul domaine.fr
est accessible par Internet, il est nécessaire de masquerader
afin que lorsqu'un membre de gestion.domaine.fr
envoie un mail à l'extérieur, il puisse reevoir une
réponse.
Dans le fichier /etc/mail/sendmail.mc
:
#changer
les noms de domaines
#dans
les commandes SMTP (RCPT TO, MAIL FROM)
FEATURE(masquerade_envelope)dnl
#changer les
noms de domaines même lorsqu'ils sont précédés
#du nom de
machine (*.domaine.tld)
FEATURE(masquerade_entire_domain)dnl
#et aussi
dans le contenu du mail
FEATURE(allmasquerade)dnl
MASQUERADE_DOMAIN(nom_domaine_interne.tld)dnl
MASQUERADE_AS(`nom_domaine_externe.tld')dnl
#se limiter
aux domaines spécifiés par MASQUERADE_DOMAIN
FEATURE(limited_masquerade)dnl
#ne pas
changer le domaine en paramètre
MASQUERADE_EXCEPTION(`nom_autre_domaine.tld')dnl
#active le
fichier local-host-names
FEATURE(use_cw_file)dnl
#redirection
de mails locaux vers externe
FEATURE(`genericstable',`hash
-o /etc/mail/genericstable.db')dnl
Le fichier
local-host-names permet
d'indiquer l'ensemble des machines pour lequelles on sert de serveur
mail. Dans le fichier /etc/mail/local-host-names
:
#
local-host-names - include all aliases for your machine here.
nom_domaine.local1.tld
nom_domaine.local2.tld
...
Le fichier
/etc/mail/genericstable permet de
rediriger le courrier des utlisateurs locaux vers l'extérieur.
Dans le fichier /etc/mail/genericstable
selon le format suivant :
nom_utilisateur_local:
user@fai.tld
7.Adresses d'utilisateurs virtuels
Tout comme, il nécessaire de
masquerader les mails sortants pour se rendre visible de l'extérieur,
il est nécessaire (ou du moins intéressant) de donner
des adresses virtuelles afin que dans l'exemple précédent,
truc@domaine.fr redevienne
truc@gestion.domaine.fr
pour que l'utilisateur interne truc puisse recevoir ses mails.On peut
aussi renvoyer explicitement un message d'erreur ou donner un alias
(nom de domaine compris, contrairement à aliases).
Dans le fichier /etc/mail/sendmail.mc
:
FEATURE(`virtusertable',`hash
-o /etc/mail/virtusertable.db')dnl
Dans
le fichier /etc/mail/virtusertable :
#un alias
simple
alias@domaine.fr utilisateur_local
#un alias
avec domaine
alias@domaine.fr utilisateur@autre_domaine.com
#à
définir pour chaque utilisateur
#si on
utilise l'erreur de l'avant dernière ligne
utilisateur@domaine.fr utilisateur
#masquerading
inverse
utilisateur@domaine.fr utilisateur@interne.domaine.fr
# aucune
autre adresse n'existe
@domaine.fr error:nouser
L'utilisateur n'existe pas !!
# ou tous
les autres adresses vers un utilisateur
#@domaine.fr utilisateur_local
8.Retransmission de mails sans le Smart Host
On peut explicitement définir
une liste de serveur SMTP vers lesquels envoyer le courrier sortant
vers des domaines connus. Par exemple, un serveur SMTP pour
domaine.fr peut renvoyer le courrier vers des serveurs de sous
domaines comme gestion.domaine.fr.
Dans le fichier /etc/mail/sendmail.mc
:
FEATURE(`mailertable',`hash
-o /etc/mail/mailertable.db')dnl
Dans
le fichier /etc/mail/mailertable :
autre_domaine.tld smtp:serveur_smtp.autre_domaine.tld
9.Renvoi de mails d'un serveur à un
autre
On peut faire une redirection explicite
d'un email sur un autre mail par le biais des utilisateurs virtuels.
Dans
le fichier /etc/mail/virtusertable :
utilisateur1@domaine.fr utilisateur1
utilisateur2@domaine.fr utilisateur2
utilisateur3@domaine.fr utilisateur3
...
@domaine.fr %1@autre_domaine.com
10.Prise en compte des modificiations
A chaque modification des fichiers
sendmail.mc, virtusertable,
mailertable...et de tous les fichiers possibles dans
/etc/mail, vous devez exécuter :
[root]# cd
/etc/mail
[root]# make
[root]#
service sendmail restart
11.Relai sécurisé
Il peut arriver que vous deviez
transmettre des mails directement de a.fr
vers b.uk ou c.de
sans pour autant être en contacte avec l'admin de ces domaines.
Il existe les options suivantes pour Sendmail.mc
:
FEATURE(relay_hosts_only).
Normalement seuls les noms de domaines doivent être incrits
dans /etc/mail/relay-domains pour autoriser le relai
vers ces domaines vers n'importe quel hôte. Avec cette
option, on doit lister tous les serveurs SMTP vers lesquels on peut
relayer.
FEATURE(relay_entire_domain).
Autorise du trafic SMTP vers et depuis toutes les machines du
domaine local du serveur SMTP ce qui est équivalent à
ajouter le nom de domaine local à /etc/mail/relay-domains.
FEATURE(access_db).
Active la base de gestion des relais en fonction du domaine, hôte
ou mails d'émetteur. Le format de la base access est décrit
plus bas.
FEATURE(blacklist_recipients).
Indique de prendre aussi en compte les noms des adresses de
destinations.
FEATURE(dnsbl).
Active le rejet d'email à partir de la liste Realtime
Blackhole List maintainue sur mail-abuse.org.
FEATURE(accept_unqualified_senders).
Autoriser les utilisateurs à donner un email sans domaine
(utilisateur au lieu de
utilisateur@domaine.com)
FEATURE(accept_unresolvable_domains).
Accepter les mails vers des domaines que l'on ne gère pas
dans se préoccuper de la destination. Cette option peut
transformer le serveur en relai ouvert, c'est à dire, une
cible pour les spammeurs.
FEATURE(relay_based_on_MX). Autorise le relai
pour tous les domaines pour lesquels le MX DNS pointe vers notre
serveur.
Les options suivantes sont en général, de mauvaises
idées :
FEATURE(relay_local_from).
Autorise les mails dont l'émetteur appartient au domaine
local. Cependant, comme il est très facile de changer le MAIL
FROM...c'est une mauvaise idée.
FEATURE(promiscuous_relay). Désactive
tous contrôle de relai = relai ouvert.
12.Contrôle d'accès SMTP :
/etc/mail/access
Pour activer le contrôle d'accès à SMTP sur
sendmail, il est nécessaire de définir dans le fichier
sendmail.mc :
FEATURE(`access_db',`hash -o /etc/mail/access.db')dnl
Ce fichier permet de définir individuellement les domaines
autorisés à relayer des mails ou les domaines vers
lesquels on peut relayer. On peut aussi préciser des règles
d'accès pour le domaine que l'on sert. Ceci permet de créer
des règles anti-spam rudimentaire ou de forcer certains
utilisateurs à utiliser certaines fonctionnalités TLS.
Chaque ligne se compose d'un nom de domaine, d'hôte ou
d'utilisateur et d'une action :
key action
key peut être
:
un nom de domaine ou de sous domaine
un nom FQDN d'hôte
une IP
un sous réseau (par exemple, 192.168.1)
un nom d'utilisateur sous forme email user@domaine.tld
action
peut être ;
REJECT : refuser la connexion
DISCARD : accepter le mails mais
ne pas le relayer. Permet de faire croire que le mails est parti
OK : traiter le mails normalement
RELAY : autoriser le relai depuis
ou vers key
numéro_erreur_smtp message
: une erreur SMTP, par exemple : spam@buyme.com 550 Spammers shan't
see sunlight here
On peut aussi préfixer chaque
ligne par :
« Connect: »
pour indiquer que key
concerne l'origine de la connexion au serveur
« To: » pour
indiquer que key
concerne l'adresse de destination du mail à transmettre
« From: »
pour indiquer que key
concerne l'adresse d'émetteur du mail à transmettre
Ne pas oublier de refaire un make dans le dossier /etc/mail
et de relancer sendmail.
13.Anti-spam
Voilà bien une plaie de la messagerie : le SPAM. Un anti
spam est souvent nécessaire et devient incontournable si l'on
fait relai vers certains domaines afin de ne relayer que du courrier
utile.
# apt-get install spamassassin
activer le démarrage du service au démarrage de la machine (/etc/default/spamassassin et directive ENABLE=1).
# /etc/init.d/spamassassin start
Dans le fichier /etc/mail/spamassassin/local.cf :
#entête à ajouter dans le sujet des mails de spam
rewrite_header Subject [SPAM]
#langue française
lang fr
#ajouter au sujet
rewrite_subject 1
#mettre le message de spam en attachement message/rfc822 sans le modifier
# et réexpédier le mail rapportant le spam
report_safe 1
#nombre de points au dessus duquel un mail est considéré comme un spam
required_score 4.2
#indique la liste des langues de mail autorisée en entrée
ok_languages fr
#indique la liste des langues de mail autorisée en entrée
ok_locales en
#activer l'apprentissage par le méthode de Bayès
bayes_auto_learn 1
#utiliser la méthode de Bayès
use_bayes 1
#délai d'attente pour les requête DNS
rbl_timeout 1
skip_rbl_checks 1
#ne pas utiliser razor 2
use_razor2 0
#désactive le test de la longueur du Message-Id
score MSGID_FROM_MTA_SHORT 0.0 0.0 0.0 0.0
Pour un utilisateur particulier, on utilisera le fichier .procmailrc. Pour tout le monde, on modifiera le fichier /etc/procmailrc.
Dans le fichier procmailrc :
# SpamAssassin sample procmailrc
# ==============================
# The following line is only used if you use a system-wide /etc/procmailrc.
# See procmailrc(5) for infos on what it exactly does, the short version:
# * It ensures that the correct user is passed to spamd if spamc is used
# * The folders the mail is filed to later on is owned by the user, not
# root.
DROPPRIVS=yes
# Pipe the mail through spamassassin (replace 'spamassassin' with 'spamc'
# if you use the spamc/spamd combination)
#
# The condition line ensures that only messages smaller than 250 kB
# (250 * 1024 = 256000 bytes) are processed by SpamAssassin. Most spam
# isn't bigger than a few k and working with big messages can bring
# SpamAssassin to its knees.
#
# The lock file ensures that only 1 spamassassin invocation happens
# at 1 time, to keep the load down.
#
:0fw: spamassassin.lock
* < 256000
| spamassassin
# Mails with a score of 15 or higher are almost certainly spam (with 0.05%
# false positives according to rules/STATISTICS.txt). Let's put them in a
# different mbox. (This one is optional.)
:0:
* ^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
almost-certainly-spam
# All mail tagged as spam (eg. with a score higher than the set threshold)
# is moved to "probably-spam".
:0:
* ^X-Spam-Status: Yes
probably-spam
# Work around procmail bug: any output on stderr will cause the "F" in "From"
# to be dropped. This will re-add it.
# NOTE: This is probably NOT needed in recent versions of procmail
:0
* ^^rom[ ]
{
LOG="*** Dropped F off From_ header! Fixing up. "
:0 fhw
| sed -e '1s/^/F/'
}
14.Antivirus
ClamAV a été conçu dans le but de scanner
les mails d'un serveur mail pour Linux/Unix et est sous licence
GPL.
[root]# apt-get update
[root]# apt-get install
clamav
a)Configuration
A l'installation, il est nécessaire de choisir cron pour
la mise à jour de la base.
b)Intégration aux serveur mails
1Sendmail
[root]# apt-get install
clamav-milter
Dans le fichier /etc/mail/sendmail.mc,
vérifier que les lignes
suivantes ci trouvent :
INPUT_MAIL_FILTER(`clmilter',`S=local:/var/run/clamav/clmilter.sock',F=,T=S:4m;R:4m')dnl
define(`confINPUT_MAIL_FILTERS',`clmilter')dnl
Recompilez le fichier sendmail.mc
avec les macros m4
:
[root]# m4 sendmail.mc > sendmail.cf
Editiez ensuite /etc/clamav/clamd.conf
et verifiez qu'il contient les lignes :
#Automatically Generated by clamav-base postinst
#To reconfigure clamd run #dpkg-reconfigure clamav-base
#Please read /usr/share/doc/clamav-base/README.Debian.gz for details
LocalSocket /var/run/clamav/clamd.sock
FixStaleSocket
User clamav
AllowSupplementaryGroups
ScanMail
ScanArchive
ArchiveMaxRecursion 5
ArchiveMaxFiles 1000
ArchiveMaxFileSize 10M
ArchiveMaxCompressionRatio 250
ReadTimeout 180
MaxThreads 12
MaxConnectionQueueLength 15
LogFile /var/log/clamav/clamav.log
LogTime
LogFileMaxSize 0
PidFile /var/run/clamav/clamd.pid
DatabaseDirectory /var/lib/clamav
SelfCheck 3600
ScanOLE2
ScanPE
DetectBrokenExecutables
ScanHTML
ArchiveBlockMax
Editiez enfin /etc/default/clmilter
et verifiez qu'il contient les lignes :
SOCKET=local:/var/run/clamav/clmilter.sock
Il ne reste plus qu'a relancer sendmail.
Pour cela vous devez d'abord regénérer son
fichier de configuration /etc/mail/sendmail.cf
:
root@localhost# m4 sendmail.mc > sendmail.cf
Puis relancez sendmail.
[root]# apt-get install
clamav-testfiles
ClamAV est maintenant opérationnel: vous pouvez essayer
de vous envoyer le fichier /usr/share/clamav-testfiles/clam.zip
(qui contiens une signature de virus) par mail, le serveur vous
renverra une erreur 571 vous indiquant que le fichier contiens un
virus.
15.Authentification SMTP
a)Installation
[root]# apt-get install
sendmail-bin sasl2-bin openssl libsasl2-modules
sendmail -d0.1 -bv root | grep SASL
et vérifier que SASL s'affiche bien.
b)Configuration
Dans le fichier /usr/lib/sasl2/Sendmail.conf
:
#synchroniser les bases
systèmes et sasldb2
auto_transition: true
#utiliser le démon
d'authentification
pwcheck_method: saslauthd
#autre méthode
d'authentification par sasldb2
auxprop_plugin: sasldb
#autorisé les
authentifications textuelles
allowplaintext: 1
#une liste des méthodes
possibles
mech_list: EXTERNAL DIGEST-MD5
CRAM-MD5 LOGIN PLAIN
Dans le fichier /etc/default/saslauthd
:
# This needs to be uncommented
before saslauthd will be run automatically
START=yes
# You must specify the
authentication mechanisms you wish to use.
# This defaults to "pam"
for PAM support, but may also include
# "shadow" or
"sasldb", like this:
# MECHANISMS="pam shadow"
MECHANISMS="pam shadow
sasldb"
Exécuter /etc/init.d/saslauthd
start
Dans le fichier /etc/mail/sendmail.mc
:
dnl on peut
simplement utiliser la configuration par défaut en mettant
seulement la ligne suivante
dnl
include(`/etc/mail/sasl/sasl.m4')dnl
dnl pour les MTA non standard
define(`confAUTH_OPTIONS', `A')dnl
dnl indique les méthodes d'authentification autorisées pour le relai de mails
TRUST_AUTH_MECH(`DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl liste des méthodes d'authentification autorisées
define(`confAUTH_MECHANISMS', `DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
Exécuter sendmailconfig et répondre Y à toutes
les questions.
Vérifier que vous avez la ligne suivante dans la réponse
de sendmail lors du EHLO :
250-AUTH DIGEST-MD5 CRAM-MD5 LOGIN PLAIN
c)Obliger les connexions authentifiées
Dans le fichier /etc/mail/sendmail.mc, remplacer :
DAEMON_OPTIONS(`Family=inet,
Name=MTA-v4, Port=smtp')dnl
par
DAEMON_OPTIONS(`Family=inet,
Name=MTA-v4, Port=smtp, M=Ea')dnl
Ensuite faire un make dans /etc/mail et relancer sendmail.
d)Interdire EXPN/VRFY sauf pour les utilisateurs authentifiés
Dans sendmail.mc :
#interdire EXPN/VRFY
define(`confPRIVACY_FLAGS',
`authwarnings,novrfy,noexpn')dnl
#règle pour autoriser
LOCAL_CONFIG
F{trusty}/etc/mail/trusted-domains
LOCAL_RULESETS
Scheck_expn
R$*
$@ $>check_expn_and_vrfy $1
Scheck_vrfy
R$* $@
$>check_expn_and_vrfy $1
Scheck_expn_and_vrfy
R$* $: <
$&{client_name} >
R< $={trusty} > $@ OK
R< $+
$={trusty} > $@ OK
R$* $: $&{auth_type}
R$={TrustAuthMech}
$@ OK
R$* $#error $@ 5.7.1 $: 550 EXPN/VRFY failed for
$&{client_name}
e)Utiliser Sendmail pour relayer ou envoyer du
courrier par SMTP AUTH
Passer en root
Aller dans le dossier de votre
sendmail.mc, habituellement /etc/mail/.
Créer un dossier auth sûr:
# mkdir auth
# chmod 700 auth
Créer un fichier
auth/auth-info avec les informations d'authentification :
AuthInfo:serveur_mail.domaine.tld "U:root" "I:utilisateur" "P:mot_de_passe"
Générer la db d'authentification et la rendre
lisible uniquement de root:
# cd auth
# makemap hash client-info < client-info
# chmod 600 client-info*
# cd ..
Ajouter le ligne suivante à votre sendmail.mc :
dnl indique le fichier servant à Sendmail pour s'authentifier lors du relayage
define(`confDEF_AUTH_INFO', `/etc/mail/auth/auth-info')dnl
Genérer sendmail.cf:
# m4 sendmail.mc > sendmail.cf
Redémarrer sendmail
16.SMTP TLS : SMTP sécurisé
a)Configuration
Pour que Sendmail puisse utiliser STARTTLS en serveur ou en client
vous devez mettre ceci dans votre sendmail.mc
:
dnl on peut
simplement utiliser la configuration par défaut en mettant
seulement la ligne suivante
dnl
include(`/etc/mail/tls/starttls.m4')dnl
dnl chemin du dossier contenant tous les certificats
define(`confCACERT_PATH', `/etc/mail/certs')dnl
dnl nom du certificat CA signant le certificat du serveur
define(`confCACERT', `/etc/mail/certs/CAcert.pem')dnl
dnl nom des fichiers contenant les certificats et clés privées pour le serveur
dnl en tant que serveur
define(`confSERVER_CERT', `/etc/mail/certs/MYcert.pem')dnl
define(`confSERVER_KEY', `/etc/mail/certs/MYkey.pem')dnl
dnl en tant que relai
define(`confCLIENT_CERT', `/etc/mail/certs/MYcert.pem')dnl
define(`confCLIENT_KEY', `/etc/mail/certs/MYkey.pem')dnl
Ensuite :
Installer le certificat de l'autorité de certification
CA qui signe le certificat du serveur dans le fichier
/etc/mail/certs/CAcert.pem.
Installer un ou plusieurs serveurs d'autorités de
certifaction pour vérifier la validité des certificats
clients et faire un lien vers leur hash pour chacun d'eux :
C=nom_fichier_certificat_CA
ln -s $C `openssl x509 -noout -hash < $C`.0
Installer le certificat du serveur
(dont le CN est le FQDN du serveur et dont la clé privée
n'est pas cryptée) dans les fichiers
/etc/mail/certs/MYcert.pem
(pour le certificat) et /etc/mail/certs/MYkey.pem
(chmod 700) (pour la clé privée)
b)Test
Lancer sendmailconfig et répondre Y à toutes les
questions. Vérifier qu'à la connexion EHLO, il se
trouve bien une ligne :
250-STARTTLS
c)Obliger les connexions sécurisées pour
l'authentification textuelle
dnl indique que l'authentification est obligatoire
dnl et que LOGIN et PLAIN nécessitent STARTTLS
define(`confAUTH_OPTIONS', `A p y')dnl
17.PGPSendmail
Ce logiciel permet de faire un pont PGP entre deux serveurs SMTP,
de façon à crypter les messages de manière
transparente et ceci en fonction de l'expéditeur.
http://www.atnf.csiro.au/people/rgooch/PGPsendmail.html
III.Serveur POP/IMAP : dovecot
1.Installation
[root]#
apt-get install dovecot
2.Configuration
#
Protocoles que l'on veut servir :
#
imap imaps pop3 pop3s
protocols
= imap imaps pop3 pop3s
#
IP ou nom d'hôte de l'interface sur laquelle servir le
protocole spécifié
#
sous la forme hôte_ou_IP:port
#
ou * pour toutes les interfaces
imap_listen
= *
pop3_listen
= *
imaps_listen
= *
pop3s_listen
= *
#
Ne pas désactiver SSL/TLS.
ssl_disable
= no
#
certificat SSL/TLS et clé privée encodée PEM
X.509. Ces fichiers ne doivent
#
pouvoir être lus que par root
ssl_cert_file
= /etc/ssl/certs/dovecot.pem
ssl_key_file
= /etc/ssl/private/dovecot.pem
#
désactive les commandes à authentification textuelle
plain (comme LOGIN)
#
sauf sur l'interface lo
#disable_plaintext_auth
= yes
#
Grant access to these extra groups for mail processes. Typical use
would be
#
to give "mail" group write access to /var/mail to be able
to create dotlocks.
mail_extra_groups
= mail
##
##
Authentication processes
##
#
Nom du processus d'authentification
auth
= default
#
Indique la méthode d'authentification pour IMAP/POP
#
Liste de méthodes séparées par des espaces :
#
anonymous plain digest-md5 cram-md5
#
#
anonymous - Pas d'authentification
#
plain - Mot de passe circulant en clair. (très courant)
#
digest-md5 and cram-md5 - mots de passes encryptés (plus
rare).
#
il n'y a pas beaucoup de client qui le supporte et la base de mot de
passe
#
locale doit être en texte clair ou encrypté de façon
réversible
#
#
Voir auth.txt pour plus de détails
auth_mechanisms
= plain
#
Base d'utilisateur contenant le chemin des mails et les UID/GID
#
http://wiki.dovecot.org/Authentication
#
http://wiki.dovecot.org/VirtualUsers
#
passwd: /etc/passwd ou similaire, en utilisant getpwnam()
#
passwd-file <path>: fichier à la passwd dans le chemin
spécifié
auth_userdb
= passwd
#
Base de mots de passes contenant uniquements les mots de passes
utilisateurs
#
http://wiki.dovecot.org/Authentication
#
passwd: /etc/passwd ou similaire, en utilisant getpwnam()
#
shadow: /etc/shadow ou similaire, en utilisant getspnam()
#
pam [<service> | *]: PAM authentication
#
passwd-file <path>: fichier à la passwd dans le chemin
spécifié
auth_passdb
= pam
#
utilisateur autorisé à accéder à la base
d'utilisateurs et de mots de passes
auth_user
= root
3.Lancement de dovecot
[root]#
/etC/init.d/dovecot start
4.Configuration de Dovecot over SSL
Vous allez également générer
des clefs pour pouvoir utiliser imap et pop en ssl (imaps et pops),
et donc configurer votre serveur de mail pour qu'il utilise ssl.
Dans le fichier
/etc/dovecot/dovecot.conf
:
protocols
= imap imaps pop3 pop3s
ssl_disable=no
#chemin
du fichier de la paire de clé privée/publique .KEY.
Peut être dans /etc/pki/dovecot/private
ssl_key_file
= /chemin/vers/fichier.key
#ou fichier.pem
#
chemin du fichier certificats signé (ou autosigné).
Peut être dans /etc/pki/dovecot/certs
ssl_cert_file
= /chemin/vers/fichier.crt
#ou fichier.pem
Génération de certificats avec
dovecot
On se place dans le
dossier /etc/pki/dovecot :
(on prépare le terrain, peu générer des erreurs)
[root]#
rm dovecot.pem
[root]#
rm private/dovecot.pem
[root]#
mkdir private certs
On édite le
fichier dovecot-openssl.cnf :
[
req ]
default_bits
= taille_clé #1024
encrypt_key
= yes
distinguished_name
= nom du demandeur du certificat
x509_extensions
= cert_type
prompt
= no
[
nom du demandeur ]
#
country (2 letter code)
C=pays
#
State or Province Name (full name)
ST=province
#
Locality Name (eg. city)
L=ville
#
Organization (eg. company)
O=entreprise
#
Organizational Unit Name (eg. section)
OU=service
ou section de l'entreprise
#
Common Name (*.example.com is also possible)
CN=nom
du serveur
#
E-mail contact
emailAddress=email
de l'administrateur
[
cert_type ]
nsCertType
= server
On peut utiliser le
script : mkcert.sh
[root]#
cd /usr/share/doc/dovecot-x.xx.xx/examples/mkcert.sh
IV.Et iptables dans tout ça
Sendmail, comme tous les serveurs SMTP, écoute sur le port
TCP 25 ce qui donne :
[root]# iptables -A INPUT -p
tcp --dport 25 -j ACCEPT
[root]# iptables -A OUTPUT -p
tcp --sport 25 -j ACCEPT
De plus, il peut aussi écouter sur le port TCP 587 (port
MSA : Mail Submission Agent), un MTA pour réseau local
obligeant l'authentification :
[root]# iptables -A INPUT -p
tcp --dport 587 -j ACCEPT
[root]# iptables -A OUTPUT -p
tcp --sport 587 -j ACCEPT
V.Bibliographie
Sendmail SMTP
Sendmail Consortium
Configurer
sendmail
Sendmail SMTP STARTTLS
SMTP
STARTTLS in sendmail/Secure Switch
Sendmail SMTP AUTH
http://linux.derkeiler.com/Mailing-Lists/Debian/2003-07/0304.html
http://www.sendmail.org/%7Eca/email/auth.html
http://www.jonfullmer.com/smtpauth/
http://www.joreybump.com/code/howto/smtpauth.html
http://server.1und1.com/root_server/bs/suse72/howtos/1.html
http://info.ccone.at/INFO/Mail-Archives/redhat/Jan-2002/msg02936.html
http://www.howtoforge.com/howto_sendmail_smtp_auth_tls
Serveur IMAP/POP
Dovecot