lindev : administration linux , développement php

Aller au contenu | Aller au menu | Aller à la recherche

06 sept. 2010

Relayer vos mails

Installer un relais pour vos mails

passage-relais.jpg

Un petit billet pour vous montrer comment installer un relais pour vos mails avec authentification..
J'utilise ce genre de chose sur les serveur dédiés , par exemple un dédié chez 1&1 , votre application web doit envoyé des mails pour une raison X ou Y , vous avez beau faire ce que vous voulez , ( belles entêtes , structure propre et aux normes , config dns pour déclarer votre serveur comme expéditeur , signature dkim ect ... ) certaines boites ne laisserons pas passer ...
Et ... quel boulot .

En utilisant les serveurs SMTP de votre prestataire , celà vous rendra la tâche déjà bien plus simple et rapide .
Seule la structure du mail devra évidemment être parfaite .. du coté serveur ... rien à gérer .. ouf !

Allons y ..

Ressources : postfix sasl

Installation

Nous allons installer le minimum requis pour notre relais , à savoir postfix et ses paquets liés pour sasl

apt-get postfix libsasl2 sasl2-bin libsasl2-modules libdb3-util

Vous voilà avec un serveur smtp .. chouette , vous pouvez expédier des mails directement ( serveur SMTP : 127.0.0.1 ) .. c'est bien , mais encore insuffisant pour ce que nous souhaitons faire.

Configuration :

La configuration se passe principalement dans le fichier main.cf .
Commençons donc par l'editer :

vim /etc/postfix/main.cf

Nous allons modifier / ajouter les lignes suivantes :

relayhost = auth.smtp.1and1.fr

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd
smtp_sasl_security_options = noanonymous

Bon voilà vous l'avez deviné , pour l'exemple , j'utilise les serveurs SMTP de 1and1 , défini donc au niveau de la ligne relayhost.

relayhost

La machine par défaut où livrer le courrier extérieur .
Si aucun relayhost n'est renseigné, le courrier est routé directement vers sa destination finale (champs MX).

smtp_sasl_auth_enable

Active l'authentification SASL dans le client SMTP de Postfix. Par défaut, le client SMTP de Postfix n'utilise pas d'authentification.

smtp_sasl_password_maps

Tables optionnelles de consultation du client SMTP contenant une entrée username:password par nom de machine ou domaine distant.

smtp_sasl_security_options

Options de sécurité SASL



Il est temps maintenant de s'occuper du couple login/pwd , chez 1and1 , il vous faut simplement creer un compte mail , le login sera donc votre adresse , et le mot de passe celui defini à la création du compte.
Pour définir ces paramètres , vous avez certainement remarqué que postfix fait appel à une table de hash hash:/etc/postfix/sasl/sasl_passwd , commençons donc par créer ce fichier.

vim /etc/postfix/sasl/sasl_passwd

A l'intérieur de ce fichier , il vous faut écrire la ligne comme ceci :

nom_du_serveur    login:motdepasse

Ensuite créons cette table de hashage , via postmap

postmap /etc/postfix/sasl/sasl_passwd

Nous voilà à la fin de notre configuration de notre serveur mail en relais pour nos applications , il reste la dernière étape , relancer postfix et vérifier les logs .

/etc/init.d/postfix restart

Pour les logs :

tail -f /var/log/mail.log

Tests

Pour les tests, un simple appel à la fonction php mail() , va envoyer le mail à postfix qui lui va demander au serveur de votre prestataire de le relayer , et ce de façon officiel ( si le mail est correct il sera reçu partout , même dans les boites hotmail et yahoo :) )

Sep  6 22:09:11 s15407375 postfix/pickup[29187]: 10E2F401A53: uid=33 from=<www-data>
Sep  6 22:09:11 s15407375 postfix/cleanup[29308]: 10E2F401A53: message-id=<20100906200911.10E2F401A53@s15407375.onlinehome-server.info>
Sep  6 22:09:11 s15407375 postfix/qmgr[23225]: 10E2F401A53: from=<www-data@s15407375.onlinehome-server.info>, size=410, nrcpt=1 (queue active)
Sep  6 22:09:12 s15407375 postfix/smtp[29310]: 10E2F401A53: to=<monadresse@mondomaine.fr>, relay=auth.smtp.1and1.fr[212.227.15.184]:25, delay=1.1, 
delays=0.09/0.01/0.06/0.97, dsn=2.0.0, status=sent (250 Message 0LlpLM-1OJeIZ1ir2-00ZaNS accepted by mrbap1.kundenserver.de)
Sep  6 22:09:12 s15407375 postfix/qmgr[23225]: 10E2F401A53: removed

Good Job .

J'espère que ce billet vous a intéressé , à bientôt ,
Christophe.

24 août 2010

PHP 5.3.3 et php-fpm

php-fpm

php-fpm-logo.gif

Voilà quelques semaines que la version 5.3.3 de php est sortie avec comme belle nouveauté php-fpm .
Au risque de répéter la doc officielle , php-fpm est :

  • FPM permet notamment de faire tourner plusieurs VHosts avec un UID/GID différent et des PHP.ini différents.
  • Support de l'upload accéléré
  • Statistiques de base (similaire au module mod_status d'Apache)
  • Redémarrage de secours en cas de destruction accidentelle du cache opcode, lors de l'utilisation d'un accélérateur de code PHP
  • Amélioration de la gestion des processus en cas de graceful stop/start
  • Journalisation des scripts lents
  • Journalisation de stdout et stderr
  • fastcgi_finish_request() une fonction spéciale pour clôturer la connection avec le client, mais continuer un traitement php/

Installation

A partir de php 5.3.3 , les sources de php-fpm sont intégrés au core , il vous suffit dont d'ajouter le paramètre --enable-fpm à la compilation , voici donc un exemple de fichier de configuration à la compilation :

#!/bin/sh

export OPTIM=-02
./configure --prefix=/usr/local \
        --enable-fpm
        --with-xsl \
        --enable-soap \
        --with-gettext \
        --enable-mbstring --with-mbstring=all \
        --disable-debug \
        --enable-memory-limit \
        --enable-ftp \
        --with-mcrypt \
        --enable-zip \
        --enable-calendar \
        --enable-exif \
        --enable-pdo \
        --with-pdo-mysql \
        --with-mysql \
        --with-pdo-sqlite \
        --with-sqlite \
        --with-zlib \
        --with-jpeg-dir \
        --with-gd \
        --with-freetype-dir=DIR \
        --with-imap-ssl \
        --with-kerberos \
        --with-imap \
        --with-curl \
        --enable-bcmath \

Le seul impératif , est d'avoir le paquet libevent en version 1.4.11 minimum .
En cas de besoin voici les sources de cette lib : http://packages.debian.org/source/sid/libevent

Un simple

./configure
make
make install

fera l'affaire.

Configuration

Une fois l'installation de php terminée il vous faudra faire quelques petits réglages de base pour le bon fonctionnement .
nous allons commencer par editer le fichier de configuration par defaut de php-pfm

cp /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf
vim /usr/local/etc/php-fpm.conf

J'ai pour habitude de tester avec les paramètres par défauts , puis d'adapter en fonction de mes besoins , voici donc la liste des paramètres à décommenter ( si ce n'est déjà fait ) , chez moi le groupe et l'utilisateur qui lance les process php sont www-data , à adapter dans votre cas , il est conseillé de mettre un utilisateur sans pouvoir .


  • pid = /usr/local/var/run/php-fpm.pid
  • error_log = /usr/local/var/log/php-fpm.log
  • listen.allowed_clients = 127.0.0.1
  • user = www-data
  • group = www-data
  • pm = dynamic
  • pm.max_children = 50
  • pm.start_servers = 20
  • pm.min_spare_servers = 5
  • pm.max_spare_servers = 35
  • pm.max_requests = 500

Voilà pour le fichier de configuration .

Démarrage automatique

Nous allons mettre l'exécutable dans le répertoire init.d afin qu'il lance automatiquement php-fpm au démarrage du serveur .

cd /etc/init.d
ln -s /usr/local/sbin/php-fpm /etc/init.d
update-rc.d php-fpm defaults

On peu maintenant lancer la bête , par un simple appel à : php-fpm
Si tout se passe correctement vous ne devriez avoir aucun message d'erreur , et une série de process se mettent à l'écoute sur le port 9000 par défaut .
Je vous laisse explorer la doc pour affiner vos réglages et aller plus loin quand à la virtualisation d'hôtes .
Utiliser php-fpm avec Nginx semble donc maintenant évident .. voilà qui va nous simplifier la vie , plus particulièrement à cette étape : liaison php - nginx

- page 1 de 11