-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Le 10/02/2014 16:44, Olivier Calzi a C)crit : > Hi all, Nous utilisons tous des services de messagerie en ligne tel > que Gmail, Outlook, Yahoo... Mais si vous vouliez prendre le > contrC4le de vos mails? comment faire? > > Comparons la technologie Exchange de Microsoft avec ces CAL's et > ces /ces/ses/g > licences et son budget ou les technologies open-source comme > Sendmail, Postfix ou dans notre cas OpenSMTPD. > > Afin d'avoir un service aussi-complet que Gmail il faudra mettre > en place plusieurs briques et OpenSMTPD en fait partie. OpenSMTPD > est un service SMTP libre utilisant le-dit protocole comme dC)fini > dans la RFC 5321. Il permet d'C)changer des e-mails avec d'autres > systC(mes utilisant ce protocole. {On peut comprendre -si on est malcomprenant- que openSMTPd ne cause qu'avec un autre OpenSMTPd} > > OpenSMTPD est un service "jeune" qui a voulu reprendre la > simplicitC) de comprC)hension et de configuration du firewall Packet > Filter d'OpenBSD. Ce service est implC)mentC) depuis OpenBSD 4.6 dans > la branche "unstable" et depuis OpenBSD 5.3 en tant que stable. > > Le MAN est la premiC(res phase de l'approche pour utiliser ce > service, il /PremiC(res/premiC(re/ > fournit les premiC(res C)tapes pour un dC)ploiement propre. > > *smtpd* is not enabled by default.In order to use it as the system > mailer, ensure the mail queue is empty, then stop sendmail(8) > <http://www.openbsd.org/cgi-bin/man.cgi?query=sendmail&sektion=8&arch=&apropos=0&manpath=OpenBSD+Current>: > > # /etc/rc.d/sendmail stop Modify the current mailwrapper(8) > <http://www.openbsd.org/cgi-bin/man.cgi?query=mailwrapper&sektion=8&arch=&apropos=0&manpath=OpenBSD+Current> > settings by editing //etc/mailer.conf/: sendmail > /usr/sbin/smtpctl send-mail /usr/sbin/smtpctl mailq > /usr/sbin/smtpctl makemap /usr/libexec/smtpd/makemap > newaliases /usr/libexec/smtpd/makemap > > Disable the sendmail clientmqueue entry in crontab(1) > <http://www.openbsd.org/cgi-bin/man.cgi?query=crontab&sektion=1&arch=&apropos=0&manpath=OpenBSD+Current>. > > Rebuild the aliases database, and enable the daemon: > > # newaliases # echo "sendmail_flags=NO" >> /etc/rc.conf.local # > echo "smtpd_flags=" >> /etc/rc.conf.local # /etc/rc.d/smtpd start > > Maintenant que le paramC)trages du service au niveau du systC(me est > faite /paramC(trages/paramC(trage/ > nous allons passer C la configuration du fichier "smtpd.conf". > > listen on all > > table aliases db:/etc/mail/aliases.db > > # Uncomment the following to accept external mail for domain > "example.org <http://example.org>" # # accept from any for domain > "example.org <http://example.org>" alias <aliases> deliver to mbox > accept from any for domain "dev.unix-experience.fr > <http://dev.unix-experience.fr>" alias <aliases> deliver to > maildir accept for local alias <aliases> deliver to maildir accept > for any relay > > Le service est C prC)sent configurC), il nous reste C accepter les > connections externes sur le port 25 avec Packet Filter et C > redC)marrer {Comment les accepter ces paquets TPC/25 ? : CF plus loin} > le service smtpd avec la commande */etc/rc.d/smtpd restart***. > > Pour vC)rifier votre configuration Opensmtpd comme pour PF il existe > la commande*smtpd -n*. > > Pour lancer smtpd en mode debug lancer la commande *smtpd -dv*. > > Configurez maintenant Packet Filter (rappel: fichier > */etc/pf.conf*) > > pass in proto tcp to self port smtp > > VC)rifiez maintenant la syntaxe et chargez le jeux de rC(gles: > > #Pour verifier la syntaxe pfctl -nf /etc/pf.conf > > #Pour charger les nouvelles regles /regles/rC(gles/ > pfctl -f /etc/pf.conf > > Pour conclure cette partie, rC)alisons un test: > > telnet dev.unix-experience.fr <http://dev.unix-experience.fr> 25 > Connected to dev.unix-experience.fr > <http://dev.unix-experience.fr>. Escape character is '^]'. 220 > hermes.my.domain ESMTP OpenSMTPD > > Allons un peux plus loin dans notre configuration et renforC'ons la > sC)curitC): > > > Chiffrement TLS > > listen on pcn0 port 25 tls-require hostname Hermes > > Accordons une analyse de cette ligne de configuration du fichier > smtpd.conf > > *listen on pcn0 port 25* : le service C)coutera sur l'interface pcn0 > sur le port 25 ( si le paramC(tre "all" est actif, le service > C)coutera sur toutes les interfaces) > > *tls-require* : Force les clients C C)tablir une connexion > sC)curisC)e avant d'C*tre autorisC)s C dialoguer au SMTP, l'option > *tls* seule peux suffire mais *tls-require* renforce globalement. > Il faut noter que l'utilisation de ces options nC)cessite la > crC)ation de certificats. Ces certificats peuvent C*tre spC)cifiC)s par > l'ajout de l'option *certificate *<name>.crt, <name>.key, <name>.dh > prC)sent dans le rC)pertoire /etc/mail/certs/. NC)anmoins si cette > option n'est pas prC)sente, le service recherchera des certificats > sous la forme pcn0.crt et pcn0.key qui correspond au nom de > l'interface sur laquelle nous C)coutons. Il est utile de noter que > si nous ne crC)ons qu'un certificat et sa clC) et non le CA ainsi que > le DH le service utilisera ces paramC(tres par dC)faut. > > *hostname Hermes* : permet de spC)cifier un nom pour la banniC(re > smtpd. > > > Test d'envoi > > Nous allons C prC)sent rC)aliser un test db > commande > > *mail*, en ayant lancC) smtpd en mode debug, ainsi nous pourrons > comprendre les interactions par les logs. > > echo "Ceci est un message de test" |mail -v -s "TEST MAIL" > root@localhost > > <<< 220 hermes.my.domain ESMTP OpenSMTPD >>>> EHLO localhost > <<< 250-hermes.my.domain Hello localhost [local], pleased to meet > you <<< 250-8BITMIME <<< 250-ENHANCEDSTATUSCODES <<< 250-SIZE > 36700160 <<< 250 HELP >>>> MAIL FROM: <r...@hermes.my.domain> > <<< 250 Ok >>>> RCPT TO: <root@localhost> > <<< 250 Recipient ok >>>> DATA > <<< 354 Enter mail, end with "." on a line by itself >>>> . > <<< 250 e636d771 Message accepted for delivery >>>> QUIT > <<< 221 Bye > > Ceci est le dC)tail des interaction qui ont eu lieu pendant la > communication avec le serveur SMTP. On y retrouve les champs du > destinataire et de l'C)metteur. > > Si on regarde les logs de plus prC(s, nous pouvons observer que le > service est extrC*mement verbeux: > > smtp-in: New session 000000001f305e85 from host 0@localhost > [local] debug: aliases_get: returned 1 aliases debug: > 0x12ad371d0000: end of message, msgflags=0x0000 smtp-in: Accepted > message e636d771 on session 000000001f305e85: > from=<r...@hermes.my.domain>, to=<root@localhost>, size=245, > ndest=1, proto=ESMTP debug: scheduler: evp:e636d771a30c37cc > scheduled (mda) debug: lka: userinfo <getpwnam>:unixexperience > smtp-in: Closing session 000000001f305e85 debug: mda: new session > 000000002962b8f8 for user "unixexperience" evpid e636d771a30c37cc > debug: smtp: 0x12ad371d0000: deleting session: done debug: mda: no > more envelope for "unixexperience" debug: mda: got message fd 3 for > session 000000002962b8f8 evpid e636d771a30c37cc debug: mda: > querying mda fd for session 000000002962b8f8 evpid > e636d771a30c37cc debug: smtpd: forking mda for session > 000000002962b8f8: "/home/unixexperience/Maildir" as unixexperience > debug: mda: got mda fd 4 for session 000000002962b8f8 evpid > e636d771a30c37cc debug: mda: end-of-file for session > 000000002962b8f8 evpid e636d771a30c37cc debug: mda: all data sent > for session 000000002962b8f8 evpid e636d771a30c37cc debug: smtpd: > mda process done for session 000000002962b8f8: exited okay > delivery: Ok for e636d771a30c37cc: from=<r...@hermes.my.domain>, > to=<root@localhost>, user=unixexperience, method=maildir, delay=1s, > stat=Delivered debug: mda: session 000000002962b8f8 done debug: > mda: user "unixexperience" becomes runnable debug: mda: all done > for user "unixexperience" > > Nous pouvons alors dC)crire les C)tapes de rC)ception du mail par dans > un premier par le MTA qui C rechercher un alias liant le > destinataire (root@localhost), une fois identifiC) comme > l'utilisateur "unixexperience", le MTA transmet le message au MDA > interne de opensmtpd en attribuant alors l'"evpid" que l'on peux > interprC)tC) comme "enveloppe identifer" au mda. > > Ensuite une session interne s'initialise ou le message va C*tre > dC)livrC) dans l'emplacement Maildir correspond C l'utilisateur > unixexperience. > > > Configuration d'un relai /relai/relais/
> > Nous pouvons considC)rer vouloir faire relayer nos mail par notre > service smtp dans le cadre ou les ports ou la destination de notre > smtp est /ou/oC9/ > bloquC)e C notre emplacement gC)ographique ou tout simplement pour > en faire un relais Nous allons donc ajouter une rC(gle qui > relaierons nos /relaierons/relaiera/ > mails via GMAIL. > > Voici C quoi ressemble notre fichier smtpd.conf: > > listen on pcn0 port 25 tls-require auth hostname Hermes listen on > pcn0 port 465 smtps auth hostname Hermes > > table secrets db:/etc/mail/secrets.db table aliases > db:/etc/mail/aliases.db > > # Uncomment the following to accept external mail for domain > "example.org > <http://example.org>"http://www.unix-experience.fr/wp-admin/post.php?post=2889&action=edit&message=10 > > # > # accept from any for domain "example.org <http://example.org>" > alias <aliases> deliver to mbox accept from local for any relay via > tls+ auth://la...@smtp.gmail.com:587 > <http://la...@smtp.gmail.com:587> auth <secrets> > > Pour arriver C cette configuration nous avons dC;t rC)aliser > plusieurs /dC;t/dC;/ > actions. > > touch "label idgoo...@gmail.com:PASSWD" >> /etc/mail/secrets > makemap /etc/mail/secrets chmod 640 /etc/mail/secrets* chown > root:_smtpd /etc/mail/secrets* > > Nous avons donc crC)e un fichier contenant les informations > d'identification pour utiliser le relais de google. Ensuite nous > avons crC)e le fichier "secrets.db" qui sera utililsC) par smtpd, > nous avons /utililsC)/utilisC)/ > restreints les permission sur ce fichier ainsi que son propriC)taire > et /restrients/restreint/ permissionS > le groupe auxquels ils appartiennent pour que ceux-ci puissent > C*tre il appartient. > lisible par le daemon d'OpenSMTPD. Nous avons renseignC) ce fichier > sous cette forme dans "smtpd.conf". > > table secrets db:/etc/mail/secrets.db > > Maintenant la rC)gle du relai: relais > > accept from local for any relay via > tls+auth://la...@smtp.gmail.com:587 > <http://la...@smtp.gmail.com:587> auth <secrets> > > *accept from local for any *: Nous acceptons les envoie de mail > localement pour n'importe quel destination. > > *relay via tls+auth://la...@smtp.gmail.com:587 > <http://la...@smtp.gmail.com:587> auth <secrets> *: Nous relayons > via une authentification TLS en utilisant les information > d'authentification correspondant C l'C)tiquette label sur le smtp de > Gmail sur le port 587 en utilisant la table secrets. > > > Conclusion: > > Nous reprendrons OpenSMTPD dans un article consacrC) C la mise en > place d'un serveur mail complet avec la technologie de > virtualisation libvirt. > > Ce qu'il faut retenir de OpenSMTPD: > > - Produit en cours de dC)veloppement- Ajout de nouvel fonctionnalitC) > dans nouvelles fonctionnalitC)s > le futur - FacilitC) de comprC)hension de la configuration > > Ce qui est valable aujourd'hui pour son utilisation ne le sera > sans doute plus demain. > > Source: > > Merci C la Mailing List d'OpenSMTPD pour m'avoir C)claircit sur le > fonctionnement des C)tiquettes. > > http://www.opensmtpd.org/fr/list.html > > http://www.openbsd.org/cgi-bin/man.cgi?query=smtpd&sektion=8 > > END > > Cordialement Olivier Calzi > > Sinon, c'est top comme doc. Merci -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) Comment: Using GnuPG with Icedove - http://www.enigmail.net/ iEYEARECAAYFAlL5J0kACgkQlhqCFkbqHRbvFwCg0xzD5J7cMa0TxvMzkZokPIXm El8AnRF6+GVUehxW+jaVSZtJcxYMHtVL =dlkC -----END PGP SIGNATURE----- -- You received this mail because you are subscribed to misc@opensmtpd.org To unsubscribe, send a mail to: misc+unsubscr...@opensmtpd.org