Postfix-3.9.0

Introduction à Postfix

Le paquet Postfix contient un agent de transport de courriers électroniques (MTA). C'est utile pour envoyer des courriers électroniques à d'autres utilisateurs de votre machine hôte. On peut aussi le configurer pour être un serveur central de messagerie électronique pour votre domaine ou un agent de relai de courriers électroniques avec votre fournisseur d'accès à Internet (FAI).

Ce paquet est connu pour pouvoir être construit et fonctionner correctement avec une plateform 12.2.

Informations sur le paquet

Dépendances de Postfix

Recommandées

Facultatives

ICU-75.1 pour le support d'internationalisation des adresses de courriel (SMTPUTF8), MariaDB-10.11.8 ou MySQL, OpenLDAP-2.6.8, pcre2-10.44, PostgreSQL-16.4, SQLite-3.46.1, Berkeley DB (obsolète) et CDB ou TinyCDB

Remarquez que SQLite, MySQL, PostgreSQL et CDB ne sont utiles que s'il y a un besoin connu.

Notes des auteurs : https://wiki.linuxfromscratch.org/blfs/wiki/postfix

Installation de Postfix

Ajout des utilisateurs et des groupes

Avant de compiler le programme, vous devez créer des utilisateurs et des groupes qui doivent être opérationnels pendant l'installation. Ajoutez les utilisateurs et les groupes avec les commandes suivantes lancées depuis l'utilisateur root :

groupadd -g 32 postfix &&
groupadd -g 33 postdrop &&
useradd -c "Postfix Daemon User" -d /var/spool/postfix -g postfix \
        -s /bin/false -u 32 postfix &&
chown -v postfix:postfix /var/mail

Configuration de la construction

Les fichiers README sont formatés pour être lus avec un pageur comme less ou more. Si vous voulez les lire dans un éditeur de texte, rendez-les lisibles avec le sed suivant :

sed -i 's/.\x08//g' README_FILES/*

L'arborescence des sources de Postfix ne contient pas de script configure, mais le makefile du répertoire tout en haut de la hiérarchie contient une cible makefiles qui régénère tous les autres makefiles de l'arborescence de construction. Si vous souhaitez utiliser des logiciels supplémentaires tels qu'une base de données back-end pour des utilisateurs virtuels ou une authentification TLS/SSL, vous devrez régénérer les makefiles en utilisant un ou plusieurs paramètres CCARGS et AUXLIBS adéquats listés ci-dessous.

[Note]

Note

Pour toutes les variantes des CCARGS vous devriez vous assurer que « -DNO_NIS » est spécifié pour que la construction n'essaye pas d'accéder à l'en-tête rpcsvc qui n'existe pas dans BLFS. Si Berkeley DB (obsolète) n'est pas installé, « -DNO_DB » doit également être spécifié.

Pour plus de détails lisez les fichiers readme.

Initialisez les variables CCARGS et AUXLIBS en suivant la note plus haut :

CCARGS="-DNO_NIS -DNO_DB"
AUXLIBS=""

Ensuite, les variables CCARGS et AUXLIBS sont renseignées avec les paramètres en fonction de la configuration du système. Si un paquet facultatif est installé mais que vous ne voulez pas qu'il soit inclus dans la construction de Postfix, sautez simplement les bouts de script if [ ... ]; then correspondants.

Cyrus-SASL

Pour utiliser Cyrus-SASL avec Postfix, utilisez les arguments suivants :

if [ -r /usr/lib/libsasl2.so ]; then
  CCARGS="$CCARGS -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl"
  AUXLIBS="$AUXLIBS -lsasl2"
fi
LMDB

Pour utiliser LMDB avec Postfix, utilisez les arguments suivants :

if [ -r /usr/lib/liblmdb.so ]; then
  CCARGS="$CCARGS -DHAS_LMDB"
  AUXLIBS="$AUXLIBS -llmdb"
fi
OpenLDAP

Pour utiliser OpenLDAP avec Postfix, utilisez les arguments suivants :

if [ -r /usr/lib/libldap.so -a -r /usr/lib/liblber.so ]; then
  CCARGS="$CCARGS -DHAS_LDAP"
  AUXLIBS="$AUXLIBS -lldap -llber"
fi
Sqlite

Pour utiliser Sqlite avec Postfix, utilisez les arguments suivants :

if [ -r /usr/lib/libsqlite3.so ]; then
  CCARGS="$CCARGS -DHAS_SQLITE"
  AUXLIBS="$AUXLIBS -lsqlite3 -lpthread"
fi
MySQL

Pour utiliser MySQL avec Postfix, utilisez les arguments suivants :

if [ -r /usr/lib/libmysqlclient.so ]; then
  CCARGS="$CCARGS -DHAS_MYSQL -I/usr/include/mysql"
  AUXLIBS="$AUXLIBS -lmysqlclient -lz -lm"
fi
PostgreSQL

Pour utiliser PostgreSQL avec Postfix, utilisez les arguments suivants :

if [ -r /usr/lib/libpq.so ]; then
  CCARGS="$CCARGS -DHAS_PGSQL -I/usr/include/postgresql"
  AUXLIBS="$AUXLIBS -lpq -lz -lm"
fi
CDB/TinyCDB

Pour utiliser CDB ou TinyCDB avec Postfix, utilisez les arguments suivants :

if [ -r </path/to/CDB>/libcdb.a ]; then
  CCARGS="$CCARGS -DHAS_CDB"
  AUXLIBS="$AUXLIBS </path/to/CDB>/libcdb.a"
fi
Authentification StartTLS

Pour utiliser OpenSSL avec Postfix, utilisez les arguments suivants :

if [ -r /usr/lib/libssl.so -a -r /usr/lib/libcrypto.so ]; then
  CCARGS="$CCARGS -DUSE_TLS -I/usr/include/openssl/"
  AUXLIBS="$AUXLIBS -lssl -lcrypto"
fi

OpenSSL est installé par LFS, donc il devrait toujours être présent. Le if … then est là seulement pour rester cohérent.

Installation de Postfix

Il peut y avoir des paramètres dupliqués dans AUXLIBS comme -lm lorsque MariaDB et PostgreSQL sont tous les deux utilisés. Ils ne posent pas de problème. Installez Postfix en exécutant les commandes suivantes :

make CCARGS="$CCARGS" AUXLIBS="$AUXLIBS" makefiles &&
make

Ce paquet ne contient pas de suite de tests exploitable.

Maintenant, en tant qu'utilisateur root :

sh postfix-install -non-interactive \
   daemon_directory=/usr/lib/postfix \
   manpage_directory=/usr/share/man \
   html_directory=/usr/share/doc/postfix-3.9.0/html \
   readme_directory=/usr/share/doc/postfix-3.9.0/readme

Explication des commandes

make makefiles : Cette commande reconstruit les makefiles de l'arborescence des sources pour utiliser les options contenues dans les variables CCARGS and AUXLIBS.

sh postfix-install -non-interactive : Ceci empêche le script d'installation de poser des questions, acceptant les répertoires de destination par défaut dans quelques cas. Si les options html_directory et readme_directory ne sont pas définies, la documentation ne sera pas installée.

CCARGS="-DNO_EAI ..." : cela désactivera le support SMTPUTF8 , par exemple si le reste de votre infrastructure d'adresse de courriel ne gère pas les adresses de courriel en UTF8 et les valeurs d'en-tête de message

Configuration de Postfix

Fichiers de configuration

/etc/aliases, /etc/postfix/main.cf et /etc/postfix/master.cf

Informations sur la configuration

Créez (ou envoyez vers un fichier existant) /etc/aliases avec la commande suivante. Modifiez <LOGIN> par votre identifiant non root pour que les messages envoyés à root vous soient transférés. En tant qu'utilisateur root :

cat >> /etc/aliases << "EOF"
# Begin /etc/aliases

MAILER-DAEMON:    postmaster
postmaster:       root

root:             <LOGIN>
# End /etc/aliases
EOF

Pour protéger un fichier /etc/aliases existant, la commande ci-dessus y ajoute ces alias. Vous devriez vérifier ce fichier et recopier les alias supprimés s'il y en a.

Les auteurs de BLFS recommandent d'utiliser LMDB au lieu de Berkeley DB pour les tables Postfix. Ajoutez trois lignes à /etc/postfix/main.cf pour que postmap encode les tables de recherche au format LMDB par défaut et pour changer le paramètre de hashage par défaut des tables d'alias :

echo 'default_database_type = lmdb'       >> /etc/postfix/main.cf &&
echo 'alias_database = lmdb:/etc/aliases' >> /etc/postfix/main.cf &&
echo 'alias_maps = lmdb:/etc/aliases'     >> /etc/postfix/main.cf

Pour protéger votre serveur contre les récentes attaques SMTP par « passager clandestin », des étapes supplémentaires sont requises. Ajoutez deux lignes dans /etc/postfix/main.cf pour déconnecter les clients SMTP distant qui envoient des caractères de nouvelle ligne bruts dans la section DATA, tout en permettant aux clients sur votre réseau avec une implémentation SMTP non standard d'envoyer des courriels :

echo 'smtpd_forbid_bare_newline = normalize' >> /etc/postfix/main.cf &&
echo 'smtpd_forbid_bare_newline_exclusions = $mynetworks' >> /etc/postfix/main.cf

Remarquez que si vous suivez un tutoriel en ligne pour configurer Postfix, le tutoriel peut référencer une table de recherche par hash:/chemin/vers/la/table. Vous devriez remplacer hash par lmdb pour utiliser la table encodée au format LMDB.

[Note]

Note

Le fichier /etc/postfix/main.cf et /etc/postfix/master.cf doivent être personnalisés selon votre système. Le fichier main.cf a besoin de votre nom d'hôte pleinement qualifié. Vous trouverez que le fichier main.cf est auto-documenté donc chargez-le dans votre éditeur pour effectuer les modifications dont vous avez besoin dans votre situation.

[Note]

Note

Postfix peut aussi être configuré pour être lancé dans un environnement chroot. Voir le fichier dans les sources examples/chroot-setup/LINUX2 pour les détails.

Pour vous assurer que toutes les permissions sont correctement paramétrées, postfix fournit un outil qui doit être lancé en tant qu'utilisateur root :

/usr/sbin/postfix -c /etc/postfix set-permissions

Si vous avez une configuration existante, vous pouvez lancer l'outil postfix pour ajouter les définitions nécessaires à vos fichiers existants. En tant qu'utilisateur root :

/usr/sbin/postfix upgrade-configuration

Avant de démarrer Postfix, vous devriez vérifier que votre configuration et les droits de votre fichier fonctionneront correctement. Lancez les commandes suivantes en tant qu'utilisateur root pour vérifier et démarrer votre serveur Postfix :

/usr/sbin/postfix check &&
/usr/sbin/postfix start

Unité Systemd

Pour automatiser le lancement de Postfix au démarrage, installez l'unité postfix.service incluse dans le paquet blfs-systemd-units-20240801 :

make install-postfix

Contenu

Programmes installés: mailq (lien symbolique), newaliases (lien symbolique), postalias, postcat, postconf, postdrop, postfix, postkick, postlock, postlog, postmap, postmulti, postqueue, postsuper et sendmail
Bibliothèques installées: Aucune
Répertoires installés: /{etc,usr/lib}/postfix, /usr/share/doc/postfix-3.9.0 et /var/{lib,spool}/postfix

Descriptions courtes

mailq

Un lien symbolique vers sendmail

newaliases

Un lien symbolique vers sendmail

postalias

est un outil Postfix de maintenance de bases de données d'alias.

postcat

Affiche le contenu de fichiers de la queue Postfix sous une forme lisible par un humain

postconf

Affiche ou modifie la valeur des paramètres de configuration de Postfix

postdrop

Crée un fichier et un répertoire maildrop et copie son entrée standard dans le fichier

postfix

est le programme de contrôle de Postfix

postkick

Envoie des requêtes au service spécifié via le canal local de transport

postlock

Verrouille un dossier de messages pour un usage exclusif et exécute les commandes qui lui sont passées

postlog

Une interface de journalisation compatible avec Postfix qui peut être utilisée, par exemple, dans des scripts shell

postmap

Crée ou interroge une ou plusieurs tables de recherche Postfix ou met à jour une existante

postmulti

est le gestionnaire multi-instances de Postfix. Il permet à un administrateur système de gérer plusieurs sessions Postfix sur un seul hôte

postqueue

L'interface utilisateur Postfix pour gérer la queue

postsuper

L'interface utilisateur Postfix pour gérer la queue du super-utilisateur

sendmail

est l'interface de compatibilité Postfix avec Sendmail