lindev : administration linux , développement php

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

lundi, septembre 6 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.

mercredi, juillet 28 2010

Serveur de cache avec nginx

Monter un serveur de cache

belles-performances-formule-1-sur-tf1-L-1.jpeg

Augmentez les performances de votre site web , rendre le chargement de vos pages plus rapides , au grand bonheur de vos lecteurs mais aussi des moteur de référencement qui maintenant se basent aussi sur la vitesse de chargement des pages .

Voilà un petit aperçu du changement avec et sans serveur de cache .

Hébergement du site

Site : lindev.fr
Ligne : ADSL standard
Serveur : Nginx sous debian Lenny

Serveur de cache

Machine : cloud
Ligne : 1and1 100 mb/s
Serveur : Nginx sous debian Lenny

Avant :

mis-en-place-srvcache.jpeg

Aprés :

result-srvcache.jpeg



Vous pouvez remarquer le temps de réponse moyen .... je pense que de longs discours ne sont pas nécessaires .

Concept / Schéma

infrastructure-495x437.png

Mise en place

Je part du principe ou vous avez votre serveur nginx ou apache de fonctionnel , et le serveur de cache "nginx" lui aussi fonctionnel , mais non configuré ( car c'est que que nous allons voir ici )

Je vais prendre l'exemple concret de "lindev.fr" car c'est en condition réels que je fais mes tests , afin de ne pas vous raconter n'importe quoi .
Il va falloir créer le répertoire qui va contenir les données en cache :

mkdir -p  /usr/local/nginx/proxy_temp/

Ensuite le Vhost

Toute la configuration nécessaire , se trouve dans le Vhost , que voici :


	proxy_cache_path          /usr/local/nginx/proxy_temp/ levels=1:2 keys_zone=cache:10m inactive=10m max_size=1000M;


server {

	listen 80;


	server_name lindev.fr www.lindev.fr;

	charset utf-8;

        access_log  /var/log/host.access.log  main;

	## PROXY - Web
	location / {

		## Proxy options
		proxy_buffering           on;
		proxy_cache_min_uses       3;
		proxy_cache_valid         any 10m;
		proxy_ignore_client_abort off;
		proxy_intercept_errors    on;
		proxy_next_upstream       error timeout invalid_header;
		proxy_redirect            off;
		proxy_set_header          X-Forwarded-For $remote_addr;
		proxy_connect_timeout     60;
		proxy_send_timeout        60;
		proxy_read_timeout        60;


	        proxy_pass  http://origine.lindev.fr;
		client_max_body_size	10m;
		client_body_buffer_size	128k;
		proxy_buffers		32 4k;
		proxy_ignore_headers   Expires Cache-Control;
		proxy_set_header        Host            $host;
	}


}

Vous avez certainement remarqué les noms de domaine ,
- lindev.fr ( qui pointe vers le serveur de cache )
- origine.lindev.fr ( qui pointe vers le serveur originale apache ou autre )

Ensuite concernant les paramètres utilisés ici leurs noms sont ( enfin selon moi ) assez parlant , je vais vous rediriger pour chacun d'eux vers l'explication officiel :

proxy_cache_path
proxy_buffering
proxy_cache_min_uses
proxy_cache_valid
proxy_ignore_client_abort
proxy_intercept_errors
proxy_next_upstream
proxy_redirect
proxy_set_header
proxy_connect_timeout
proxy_send_timeout
proxy_read_timeout
proxy_pass
proxy_buffers
proxy_ignore_headers
proxy_set_header

Il vous reste à redemarrer nginx :

/usr/local/nginx/sbin/nginx -s reload

Si aucune erreur n'apparait , alors c'est gagner , reste à voir sur vos graphs de monitoring comme woozweb , l'impact de ce type de structure

La configuration ci-dessus , peut être mise en parti dans la configuration globale de nginx , ce qui vous évite de la répéter sur vos différents vhost.
Pour ce qui est des options , il doit y avoir moyen d'améliorer ça , si vous avez des idées , je suis preneur .

Merci de m'avoir lu ,
Ch.

- page 1 de 15