POSTFIX - Formation Postfix : Différence entre versions

De PedroWiki
Ligne 65 : Ligne 65 :
 
  cp /usr/share/postfix/main.cf.debian /etc/postfix/main.cf
 
  cp /usr/share/postfix/main.cf.debian /etc/postfix/main.cf
 
  vi /etc/postfix/main.cf
 
  vi /etc/postfix/main.cf
 +
 +
Pour éliminer les lignes vides et les lignes de commentaires pour ne récupèrer que les directives de conf:
 +
 +
egrep -v "^$|^#" /etc/postfix/main.cf
 +
 +
Commande '''postconf''': pour connaitre la configuration (totale) de postfix.
 +
 +
'''postconf <directive>''': pour connaitre la valeur d'UNE directive:
 +
 +
root@julien:~# postconf swap_bangpath
 +
swap_bangpath = yes
 +
 +
'''postconf -d <directive>''': pour connaitre la valeur par défaut avant surcharge.
 +
 +
'''postconf -n''': pour connaitre les valeurs différentes de celles par défaut (en gros, celles du main.cf)
 +
 +
'''postconf -e <directive>=valeur''': pour éditer les valeurs des directives (modif du fichier de conf).
 +
 +
{{Note|Texte=Attention, l'édition des paramètres par '''postconf -e''' nécessite un reload ou restart de postfix!}}
 +
 +
root@julien:~# postconf -d mydestination
 +
mydestination = $myhostname, localhost.$mydomain, localhost
 +
root@julien:~# postconf -e mydestination=toto.fr '''==> ON CHOISIT UN DOMAINE POUR LA FORMATION'''
 +
root@julien:~# postconf -d myorigin
 +
myorigin = $myhostname
 +
root@julien:~# postconf -e myorigin=toto.fr
 +
root@julien:~# postconf myhostname
 +
myhostname = julien.localdomain
 +
 +
{{Note|Texte=Attention, $myhostname n'est pas obligatoire, postfix prend le hostname réel du serveur, par défaut!}}
 +
 +
root@julien:~# postconf -e myhostname=<FQDN du serveur>
 +
 +
Si on n'a pas le FQDN du serveur dans myhostname, et que mydomain est renseigné, concaténation de myorigin et mydomain.
 +
 +
* myhostname: si vide prend le hostname par défaut.
 +
* myorigin: pour completer les adresses quand on entre 1 user sans domaine.
 +
* mydomain: pour faire correspondre 1 domaine de délivrance à ce serveur.
 +
* mydestination: contient au moins mydomain + tous les autres domaines que le serveur délivre.
 +
 +
Possibilité de mettre 1 ligne de conf sur plusieurs lignes, si les lignes secondaires comportent des espaces ou des tabulations en début de ligne.
 +
 +
{{Note|Texte=ATTENTION DE NE PAS PLACER D'ESPACES OU DE TABULATION EN DEBUT DE LIGNE (QUAND ON DECOMMENTE PAR EXEMPLE)}}

Version du 23 septembre 2008 à 11:25

Introduction

  • Postfix créé sur une rumeur de faille de sécu de sendmail, par Paul Vixie.
  • Création dans un souci de sécurité.
  • Postfix est un MTA constitué de plusieurs programmes indépendants, "ne se faisant pas confiance mutuellement".
  • Postfix prêt à fonctionner quasi out of the box.
  • Dans un premier temps, création de boite = création de compte système.
  • Après, autres besoins sans utiliser de comptes systèmes, intégration de mysql par exemple => entraine besoin de recompilation de postfix sur des plateforme style Red Hat car fonctionnalité non incluse de base dans le package.
  • Voir qemu/kvm (pour proc gérant virtualisation matérielle) pour virtualisation sous linux.

Vue d'ensemble d'un MTA

Comptes utilisateurs

Postfix utilise donc des comptes système ou des comptes virtuels.

Comptes virtuels:

  • stockage local (mbox, maildir) OU
  • stockage externe (fichier séquentiel indexé, mysql..., non géré par défaut par le MTA)

Comptes virtuels:

  • domaines partagés OU
  • domaines séparés
    • stockage local OU
    • stockage externe

cf Schéma 1

Introduction aux commandes de protocole

  • Exemple d'utilisation de la commande telnet
  • Toujours un code de retour aux commandes SMTP:
    • 2xx: OK
    • 3xx: informations
    • 4xx: erreurs temporaires
    • 5xx: erreurs fatales
  • Commandes SMTP:
    • ehlo <mon_hostname> dialogue en ESMTP
    • helo dialogue en SMTP
    • vrfy vérification existance d'un utilisateur, habituellement désactivé pour sécurité /SPAM
    • mail from ENVELOPPE
    • rcpt to ENVELOPPE (possibilité de répéter mail from et rcpt to dans le corps)
    • data CORPS DU MESSAGE
    • Subject
  • Commandes POP:
    • user
    • pass
    • list
    • retr

Installation de postfix

Installation du package

apt-get install postfix

Pas de configuration, on va la faire à la main.

Configuration de postfix

Conf dans /etc/postfix/.

Comme on n'a rien configuré lors de l'installation, besoin de récupérer un fichier de conf vierge (ou de le créer):

cp /usr/share/postfix/main.cf.debian /etc/postfix/main.cf
vi /etc/postfix/main.cf

Pour éliminer les lignes vides et les lignes de commentaires pour ne récupèrer que les directives de conf:

egrep -v "^$|^#" /etc/postfix/main.cf

Commande postconf: pour connaitre la configuration (totale) de postfix.

postconf <directive>: pour connaitre la valeur d'UNE directive:

root@julien:~# postconf swap_bangpath
swap_bangpath = yes

postconf -d <directive>: pour connaitre la valeur par défaut avant surcharge.

postconf -n: pour connaitre les valeurs différentes de celles par défaut (en gros, celles du main.cf)

postconf -e <directive>=valeur: pour éditer les valeurs des directives (modif du fichier de conf).

Fiche.png NB : Attention, l'édition des paramètres par postconf -e nécessite un reload ou restart de postfix!
root@julien:~# postconf -d mydestination
mydestination = $myhostname, localhost.$mydomain, localhost
root@julien:~# postconf -e mydestination=toto.fr ==> ON CHOISIT UN DOMAINE POUR LA FORMATION
root@julien:~# postconf -d myorigin
myorigin = $myhostname
root@julien:~# postconf -e myorigin=toto.fr
root@julien:~# postconf myhostname
myhostname = julien.localdomain
Fiche.png NB : Attention, $myhostname n'est pas obligatoire, postfix prend le hostname réel du serveur, par défaut!
root@julien:~# postconf -e myhostname=<FQDN du serveur>

Si on n'a pas le FQDN du serveur dans myhostname, et que mydomain est renseigné, concaténation de myorigin et mydomain.

  • myhostname: si vide prend le hostname par défaut.
  • myorigin: pour completer les adresses quand on entre 1 user sans domaine.
  • mydomain: pour faire correspondre 1 domaine de délivrance à ce serveur.
  • mydestination: contient au moins mydomain + tous les autres domaines que le serveur délivre.

Possibilité de mettre 1 ligne de conf sur plusieurs lignes, si les lignes secondaires comportent des espaces ou des tabulations en début de ligne.

Fiche.png NB : ATTENTION DE NE PAS PLACER D'ESPACES OU DE TABULATION EN DEBUT DE LIGNE (QUAND ON DECOMMENTE PAR EXEMPLE)