Il se peut que vous désiriez envoyer des emails en local avec le serveur SMTP de votre Mac. Les raisons peuvent être diverses, avec un portable hors de chez vous, certains fournisseurs d’accès refusent les emails sortants depuis certaines IP ou vous avez des scripts qui nécessitent l’envoi d’emails (de logs par exemple, c’est mon cas), donc il vous faut pouvoir les envoyer localement.
Mac OS X (depuis Panther) possède un serveur de messagerie, le renommé Postfix. Nous allons voir comment le faire tourner grâce au daemon launchd.
Ce document décrit la mise en route de Postfix, mais ne traite pas de sa configuration, voir sa documentation pour aller plus loin.
Les opérations suivantes doivent être réalisées en tant que root. En ce qui me concerne, j’utiliserai l’éditeur VIM.
main.cf
La première chose à faire et d’éditer main.cf
, le principal fichier de configuration de Postfix qui se trouve sous /etc/postfix/
. Au préalable, il est bon de faire une copie du fichier présent.
# mv /etc/postfix/main.cf /etc/postfix/main.cf.fab
# vim /etc/postfix/main.cf
Les paramètres myhostname, mydomain, myorigin et mynetworks_style doivent être renseignés. Le premier myhostname désigne la machine sur lequel tourne Postfix, il est tout à fait possible de laisser la valeur générique localhost.localdomain, mais je vais renseigner le FQDN de mon iBook sur mon réseau, représenté par le nom de la machine et du nom de domaine :
myhostname = osgiliath.feub.net
Ensuite, mydomain comme son nom l’indique représente le (les) nom de domaine pour lequel Postfix officiera. En général, il s’agit de la partie domaine du myhostname :
mydomain = feub.net
myorigin est le nom de domaine qui apparait dans le courrier envoyé à partir de ma machine. Il est usuel de mettre myhostname voir mydomain :
myorigin = $myhostname
Postfix ne relaie le courrier que des clients autorisés, il est donc bon de lui dire de qui avec le paramètre
mynetworks_style. Dans mon mon cas, j’autorise les machines du sous-réseau :
mynetworks_style = subnet
A noter que mynetworks pourrait être utilisé en spécifiant une adresse de réseau autorisée à la place d’un style. Par exemple :
mynetworks = 192.168.1.0/24
C’est l’un ou l’autre, si les deux paramètres mynetworks_style et mynetworks sont renseignés, mynetworks sera pris en compte.
Voilà pour la configuration du main.cf.
Enfin, pour relayer les courriers sortants, le paramètre relayhost doit être renseigné avec un serveur SMTP valide sur internet, par exemple celui d’Orange :
relayhost = [smtp.orange.fr]
org.isc.named.plist
Nous allons maintenant éditer le fichier plist de lancement de Postfix. Par défaut, celui-ci n’est pas démarré, il est en mode on demand, et nous voulons qu’il tourne toujours. Nous allons donc éditer le fichier org.postfix.master.plist
qui se situe sous /System/Library/LaunchDaemons/
(il est bon d’en faire une copie de sauvegarde avant de le modifier) :
Label
org.postfix.master
Program
/usr/libexec/postfix/master
ProgramArguments
master
-e
60
QueueDirectories
/var/spool/postfix/maildrop
OnDemand
Il faut supprimer les paramètres -e 60 et dire au daemon qu’on ne veut pas le démarrer OnDemand, mais en RunAtLoad, car on veut qu’il soit toujours en fonctionnement. Voici donc le fichier modifié :
Label
org.postfix.master
Program
/usr/libexec/postfix/master
ProgramArguments
master
QueueDirectories
/var/spool/postfix/maildrop
RunAtLoad
Il faut maintenant démarrer ou redémarrer Postfix à l’aide de launchd :
# launchctl stop org.postfix.master
# launchctl start org.postfix.master
Pour voir si Postfix fonctionne, envoyer un email comme ceci :
# date | mail -s test nom @ mon@adresse.net
Si cela ne fonctionne pas, voir les logs sous /var/log/mail.log.
Utiliser le serveur comme SMTP local
Il est maintenant possible d’utiliser Postfix comme serveur SMTP pour le courrier sortant. Pour ce faire, il faut mettre localhost comme serveur SMTP dans Mail.app ou tout autre client de messagerie.
Cette article est la mise-à-jour d’un billet du 22 juillet 2008.
Très bon tuto qui m’a beaucoup servi !
Merci
De rien :)
Excellent tuto : clair, net et précis.
ça m’a beaucoup aidé.
Merci
Excellent Tuto……… à une ligne près : celle qui lance le test final (l’envoi d’un mail) – à laquelle je n’ai rien compris ! J’ai envoyé mon mail de test de la façon suivante, plus simple à mon avis :
mail monadresse@monhebergeur
Subject: MonSujetDeTest
MonTexteDeTest
.
Sur Mac, le « . » final peut ou doit être remplacé par un ctrl-D (= EOT).
Et ça marche : merci à vous !
Merci pour le message. Le billet date un peu ;)
La commande date retourne la date actuelle, puis le pipe (le signe |) signifie que la sortie de cette commande sera envoyée à l’entrée de la commande suivante qui est la commande classique mail GNU/Linux qui existe sous OS X, qui peut prendre le sujet de l’email en paramètre avec le -s et se termine par l’adresse où envoyer le message.
Donc en une seule ligne et sans interaction j’envoie un email de test.
tuidhabhvkrehlpvsbizskfjkuibna
fettfoacxfksednmhriqvfzurhssdk