Si votre serveur possède plusieurs adresses IP et que vous souhaitez utiliser l’une d’elles pour contacter un autre serveur à partir d’un script (lancé depuis le système ou apache), il faut intervenir dans la table de routage afin de créer une route spécifique pour l’adresse IP de destination. La commande est la suivante:
route add -host IPdistante dev eth0:X
où eth0:x représente le numéro d’alias de l’IP, tel que défini dans le fichier /etc/network/interfaces.
Cette astuce vaut pour les software qui ne sont pas bindés sur une IP précise. Bind, Postfix et d’autres ont un paramètre permettant de ne les faire travailler que sur une IP précise.
Système failover, ip, route
Il est parfois utile de passer un mail à spamassassin manuellement pour voir le détail des tests entrepris et surtout la conclusion à la fin du traitement.
Copiez-collez le mail entier (headers + corps) dans un fichier texte et tapez la commande suivante:
spamassassin -D -t < mail.txt 2>&1
S’affichera alors le détails des actions entreprises. Vous pouvez faire un grep sur les mots clés qui vous intéressent (par exemple pour voir le résultat de l’examen SPF).
Courrier électronique spam
Si vous souhaitez permettre à vos utilisateurs de se connecter de manière sécurisée à votre serveur SMTP afin que les informations tranitant (mails et login/mot de passe) ne circulent pas en clair sur tout le réseau, vous pouvez activer une couche TLS directement dans Postfix.
Vous pouvez donc acheter un certificat auprès de l’autorité de certification de votre choix ou l’auto-générer si cette solution vous convient.
Dans le fichier /etc/postfix/main.cf, ajoutez les lignes suivantes:
smtpd_use_tls = yes
smtpd_tls_cert_file = /path/to/server.crt
smtpd_tls_key_file = /path/to/server.key
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
Vous pouvez ensuite redémarrer Postfix et activer le support TLS dans votre client mail.
Note: SSL a été renommé TLS suite au rachat du brevet de Netscape par l’IETF en 2001.
Courrier électronique postfix, SSL, tls
Il est parfois utile de pouvoir se connecter sur une des boites mails hébergées sans connaître son mot de passe pour diverses raisons:
- via un script pour analyser d’éventuels mails identifiés comme spam/ham par l’utilisateur;
- via un script pour archiver des emails anciens;
- directement afin de reproduire un bug signalé par l’utilisateur.
Il est évident que cette technique ne peut être utilisée simplement pour consulter les emails des utilisateurs à leur insu; c’est une atteinte à la vie privée qui peut être poursuivie par les tribunaux. Vous êtes donc prévenu, et comme pour tous les articles de ce blog, vous mettez ce qui suit en oeuvre sous votre entière responsabilité et en assumez pleinement les éventuelles conséquences.
Cette mise en garde étant faite, le concept est donc de définir un couple login/mot de passe ayant accès à toutes les boites mails hébergées sur votre serveur. Cet utilisateur master n’a rien à voir avec les utilisateurs mail déjà existants.
Dans le fichier /etc/dovecot/dovecot.conf, rajoutez la directive auth_master_user_separator=*. Puis, recherchez la section auth default et complétez-la pour qu’elle ressemble à ce qui suit:
auth_default {
passdb passwd-file {
args = /etc/dovecot/passwd.masterusers
master = yes
}
}
Le fichier /etc/dovecot/passwd.masterusers est de type htaccess. Voici les commandes pour le générer:
touch /etc/dovecot/passwd.masterusers
htpasswd -s /etc/dovecto/passwd.masterusers admin
Vous donnez alors le mot de passe de l’utilisateur admin. Vous pouvez répeter la dernière ligne autant de fois que désiré avec d’autres noms d’utilisateurs.
Les utilisateurs master pourront alors se connecter au moyen de adresse@domaine.com*admin et du mot de passe associé au compte admin.
Courrier électronique master
Si votre hébergeur vous permet d’avoir plusieurs adresses IP sur la même interface réseau, voici comment les faire reconnaître par votre système. Editez le fichier /etc/networking/interfaces. Ajoutez-y les lignes suivantes:
auto eth0:0
iface eth0:0 inet static
address xxx.xxx.xxx.xxx
netmask 255.255.255.255
Si vous avez plusieurs IP alias, il faut incrémenter le chiffre après les deux points sur les deux premières lignes. Notez que le netmask possède tous ses bits à 1.
Vous pouvez ensuite faire prendre ces changements en compte via la commande /etc/init.d/networking restart
Système alias, failover, ip
Si vous gérez un site web ou directement le serveur d’hébergement, certaines bonnes pratiques sont indispensables si vous voulez que l’envoi de mails à partir de votre serveur ne devienne pas un cauchemar. Dans le cadre d’une mailing liste ou newsletter, il faut s’assurer que l’internaute qui donne son adresse est d’accord pour recevoir les mails que vous lui envoyez, qu’il a bien tapé son adresse lui-même et qu’elle est valide. Voici comment il est possible de s’en assurer:
- vérifier que le domaine utilisé existe et possède un champ de type MX. Si ce n’est pas le cas, l’internaute a probablement fait une faute de frappe; vous pouvez donc lui représenter le formulaire en lui disant de vérifier le nom de domaine entré;
- vérifier que vous avez affaire à un internaute et pas à un robot. Pour ce faire, vous pouvez utiliser une image de type captcha, ou positionner des champs cachés dans le formulaire qu’un utilisateur normal laissera vide (puisqu’il ne les voit pas). Tandis que le robot a tendance à mettre n’importe quoi dans tous les champs qu’il trouve. Si l’image ne vous plaît pas pour diverses raisons, il est aussi possible d’utiliser une autre vérification, par exemple un calcul simple de type « combien font deux plus trois »;
- envoyer un email à l’adresse en demandant à l’internaute de cliquer sur un lien pour valider son inscription. Le mail doit idéalement ne pas être kilométrique, rappeler qu’il a donné son adresse, que s’il ne fait rien il ne recevra rien et que dans le cas où il valide il lui est toujours possible de se désinscrire à tout moment. C’est ce qu’on appelle le double opt-in.
Ensuite, il existe une série de chose qu’il est possible de mettre en place côté serveur pour espérer que les mails passent au mieux:
- posséder un reverse valide sur vos IP. Il faut que la chaîne IP -> reverse -> IP soit valide. C’est à dire que le reverse donné par votre IP doit donner l’IP;
- insérer un champ SPF dans les entrées DNS de votre nom de domaine. Ce champ désigne les adresses IP qui envoient des emails à partir de votre nom de domaine. Si on reçoit un email à partir d’une IP non déclarée dans le SPF, on peut être quasi sûr que ce mail est un spam vu qu’il n’a pas été émis depuis un serveur de courrier autorisé.
- utiliser la technique DKIM/Domain Keys qui ajoute une empreinte cryptographique dans les headers des emails envoyés. Grosso modo, vous générez une paire de clé RSA et publiez dans les entrées DNS de votre domaine la clé publique. La clé privée est gardée secrète et vous permet de signer les emails. Si le mail est altéré pendant son transfert, la signature ne sera plus valide. Comme avec SPF, on peut également vérifier que le mail a bien été envoyé depuis un des serveurs autorisés via cette technique.
Gérer une mailing liste ou newsletter impose aussi de gérer les retours d’erreurs des emails envoyés. Des adresses peuvent cesser d’exister, être en overquota permanent, il est alors nécessaire d’enlever ces adresses de la base afin de garder continuellement un fichier propre.
Courrier électronique DKIM, Domain Keys, reverse, SPF
Dans les tâches d’administration courantes, certaines tâches peuvent être facilités simplement. Voici une liste de paquets qui sont utiles sur un serveur:
- bmon: utilitaire permettant de voir le trafic entrant ou sortant sur chaque interface réseau;
- htop: utilitaire semblable à top, version un peu améliorée;
- unzip: utilitaire permettant de décompresser un fichier .zip;
- traceroute: utilitaire permettant de voir le chemin emprunté pour atteindre une destination;
- mailx: via la commande mail, vous permet d’envoyer des emails en console;
- whois: permet d’interroger la base de données whois pour voir le propriétaire d’un nom de domaine;
- imagemagick: package d’utilitaires permettant de manipuler des images en console.
Je vous invite à consulter les manpages des utilitaires susmentionnés afin de découvrir leur fonctionnement de manière détaillée.
Système paquets
Le logiciel en PHP Gallery permettant de gérer des albums photos est un excellent produit. Cependant, si vous changez la langue d’utilisation dans le menu déroulant approprié et que ce n’est suivi d’aucun effet, voici la marche à suivre pour corriger cela:
apt-get install gettext php-gettext
Vérifie que gettext et son support PHP est installé; l’installe si ce n’est pas le cas.
En tapant locale -a, vous verrez la liste des locales installées sur votre serveur. Vous constaterez qu’il manque le français. Pour l’ajouter, tapez
cat /usr/share/i18n/SUPPORTED |grep fr_FR>>/var/lib/locales/supported.d/local
Ensuite, regénerez les locales avec la commande locale-gen. Vous pouvez finalement redémarrer apache et constater que ça fonctionne maintenant !
Système gallery, locale, php
Si vous utilisez une seconde IP spécifique pour les DNS sur votre serveur, il faut que Bind s’en serve pour démarrer les transferts et envoyer les notifications en cas de modification dans une zone.
Pour ce faire, éditez le fichier /etc/bind/named.conf.options et renseignez-y les paramètres suivants:
listen-on { votreip;};
transfer-source votreip;
notify-source votreip;
Si vous ne renseignez pas ces paramètres, les serveurs secondaires risquent de refuser le transfert des zones, vu qu’il n’est pas émis depuis une ip reprise dans les serveurs DNS autorisés pour le domaine.
dns alias, bind, failover, ip
Pour faire suite à l’article sur le backup des bases MySQL, voici comment automatiser le transfert des fichiers créés via un script bash mis dans le crontab. Nous utilisons la commande ftp, qui permet, comme vous l’aurez deviné, de se connecter via le protocole FTP au serveur hébergeant les backups.
#!/bin/sh
backup=/home/backup
host=ftp.serveur.com
login=loginftp
mdp=motdepasseftp
cd $backup && /usr/bin/ftp -i -n $host << EOF
quote USER $login
quote PASS $mdp
mput *
bye
EOF
Ici, tous les fichiers présents dans le répertoire désigné par la variable backup seront transférés. Il est tout à fait possible de restreindre à un pattern spécifique en modifiant la ligne « mput ».
Système backup, ftp