Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 03/11/2006, à 09:33

chapi

Envoyer mail depuis un script de façon simple (Postfix ?)

Bonjour,

tout est dans le titre. Je cherche à envoyer un mail depuis un script shell. Je dispose déjà sur le réseau d'un serveur mail, que je ne contrôle pas. Ce serveur requirère (obligatoirement) une authentification et un cryptage TLS pour toute connexion SMTP.

Bien d'autres topics à ce sujet mais aucun ne répond vraiment à mes besoins.

1 - J'ai tout d'abord installé Postfix (permettant d'obtenir la commande "mail") et je l'ai configuré en suivant cette doc : http://doc.ubuntu-fr.org/serveur/postfix_satellite afin de relayer les mails vers le serveur SMTP existant sur le réseau.

La configuration fonctionne, mais pas avec le serveur mail déjà présent. Je n'arrive pas à configurer postfix (son client smtp particulièrement) pour qu'il se connecte et envoie le mail sur le serveur de mail existant. (authentification + TLS en cause)

2 - j'ai aussi vu qu'il existait un programme ne demandant pas de MTA comme postfix pour fonctionner. C'est le programme nail.
Est-il possible de le configurer correctement pour qu'il envoie ses mails sur le serveur de mail déjà présent ? Quelqu'un s'est-il déjà penché sur la question ?

3 - une autre solution pour envoier un mail via la console (de façon non interactive) ??

Quelle piste dois-je privilégier ?

Merci d'avance de vos réponses.

Hors ligne

#2 Le 03/11/2006, à 16:50

chapi

Re : Envoyer mail depuis un script de façon simple (Postfix ?)

pas de réponse ? sad

voiçi en attendant un peu plus d'infos concernant le point n°1 :


Ce problème avec Postfix m'agace et j'aimerais bien comprendre ce qui ne tourne pas rond.

- J'ai ajouté les lignes suivantes dans mon fichier main.cf

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

smtp_use_tls = yes
smtp_tls_loglevel = 2

- J'ai crée un fichier /etc/postfix/sasl_passwd pour l'authentification :

smtp.serveurmail.local        utilisateur:mot_de_passe

et je fait ensuite : postmap hash:/etc/postfix/sasl_passwd

- et je redémarre Postfix : /etc/init.d/postfix restart

Et il me sort les erreurs que je cite ci-dessous.

Quand je relève mes mails avec un client mail classique comme Thunderbird, il me demande d'accépter un certificat (normal me direz-vous, la connexion est cryptée). Je l'accepte et je peux envoyer et recvoir des mails sans problème.

Mais comment le client smtp de Postfix gère-t-il celà ?
Est-ce qu'il ne faudrait pas que je récupère (comment ?) le certificat du serveur smtp.serveurmail.local et que je le copie dans mon dossier Postfix en ajoutant une ligne du genre "smtp_tls_CAfile = /etc/postfix/cacert.pem" à mon fichier main.cf ?

J'utilise Postfix version 2.1.1

un postconf -n :

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
inet_interfaces = localhost
mailbox_size_limit = 128000000
mydestination = localhost, localhost.localdomain
myhostname = localhost
mynetworks = 127.0.0.0/8
myorigin = $myhostname
recipient_delimiter = +
relayhost = smtp.serveurmail.local
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =
smtp_tls_loglevel = 2
smtp_use_tls = yes
smtpd_banner = $myhostname ESMTP $mail_name ($mail_version) (Ubuntu)

J'obtient les logs suivant quand je tente d'envoyer un mail avec la commande :
echo "mon message" | mail -s "Sujet" destinataire@domaine.fr

postfix/pickup[6361]: 74AB33764: uid=0 from=<root>
postfix/cleanup[6373]: 74AB33764: message-id=<20061102141017.74AB33764@localhost>
postfix/qmgr[6362]: 74AB33764: from=<root@localhost>, size=295, nrcpt=1 (queue active)
postfix/smtp[6374]: starting TLS engine
postfix/smtp[6374]: SSL_connect:before/connect initialization
postfix/smtp[6374]: SSL_connect:SSLv2/v3 write client hello A
postfix/smtp[6374]: SSL_connect:error in SSLv2/v3 read server hello A
postfix/smtp[6374]: SSL_connect:error in SSLv3 read server hello A
postfix/smtp[6374]: SSL_connect:error in SSLv3 read server hello A
postfix/smtp[6374]: SSL_connect:SSLv3 read server hello A
postfix/smtp[6374]: Peer cert verify depth=2 /C=FR/O=.../OU=.../CN=... AC Racine
postfix/smtp[6374]: verify error:num=19:self signed certificate in certificate chain
postfix/smtp[6374]: verify return:0
postfix/smtp[6374]: Peer cert verify depth=2 /C=FR/O=.../OU=.../CN=... AC Racine
postfix/smtp[6374]: verify return:1
postfix/smtp[6374]: Peer cert verify depth=1 /C=FR/O=.../OU=.../CN=... AC Serveurs
postfix/smtp[6374]: verify return:1
postfix/smtp[6374]: Peer cert verify depth=0 /C=FR/O=.../OU=.../CN=smtp.serveurmail.local
postfix/smtp[6374]: verify return:1
postfix/smtp[6374]: SSL_connect:SSLv3 read server certificate A
postfix/smtp[6374]: SSL_connect:SSLv3 read server certificate request A
postfix/smtp[6374]: SSL_connect:SSLv3 read server done A
postfix/smtp[6374]: SSL_connect:SSLv3 write client certificate A
postfix/smtp[6374]: SSL_connect:SSLv3 write client key exchange A
postfix/smtp[6374]: SSL_connect:SSLv3 write change cipher spec A
postfix/smtp[6374]: SSL_connect:SSLv3 write finished A
postfix/smtp[6374]: SSL_connect:SSLv3 flush data
postfix/smtp[6374]: SSL_connect:error in SSLv3 read finished A
last message repeated 3 times
postfix/smtp[6374]: SSL_connect:SSLv3 read finished A
postfix/smtp[6374]: Unverified: subject_CN=smtp.serveurmail.local, issuer=... AC Serveurs
postfix/smtp[6374]: TLS connection established to smtp.serveurmail.local: TLSv1 with cipher RC4-MD5 (128/128 bits)
postfix/smtp[6374]: Peer certficate could not be verified
postfix/smtp[6374]: warning: SASL authentication failure: No worthy mechs found
postfix/smtp[6374]: 74AB33764: to=<destinataire@domaine.fr>, relay=smtp.serveurmail.local[192.168.1.10], delay=0, status=deferred (Authentication failed: cannot SASL authenticate to server smtp.serveurmail.local[192.168.1.10]: no mechanism available)

J'ai volontairement remplacé certaines parties du certificat par ... ainsi que l'adresse de destination du mail.


Dois-je persister sur cette voie ? ou y a-t-il une autre solution ?

Merci

Dernière modification par chapi (Le 03/11/2006, à 17:01)

Hors ligne

#3 Le 03/11/2006, à 21:28

Zel

Re : Envoyer mail depuis un script de façon simple (Postfix ?)

as-tu regardé par ici ?

http://postfix.traduc.org/index.php/TLS_README.html

et plus précisement

http://postfix.traduc.org/index.php/TLS_README.html#client_cert_key

La version anglaise est peut-être plus à jour

http://www.postfix.org/TLS_README.html

Désolé, mais j'ai pas le courage de tout lire tongue

Hors ligne

#4 Le 03/11/2006, à 22:23

chapi

Re : Envoyer mail depuis un script de façon simple (Postfix ?)

Bonsoir Zel, et merci de ton aide.

J'avais effectivement déjà lu la page que tu proposes, mais en réalité je ne comprend pas trop.

Durant la négociation de démarrage TLS, le client SMTP de Postfix peut presenter un certificat au serveur SMTP distant.

Pour les les serveurs SMTP distants vérifient le certificat du client SMTP de Postfix, le certificat de l'autorité (dans le cas d'une chaîne de certificat, tous les certificats des autorités) doivent être disponibles. Vous devrez ajouter ces certificats au certificat client : le certificat client en premier, puis les autorités émettrices.

Ca veux dire quoi ? Est ce qu'il faut que je crée un certificat pour mon serveur relai, afin que le serveur mail puisse le vérifier ?

Quand je me connecte avec mon client mail, je doit vérifier et accépter le certificat du serveur. Postfix agit ici en tant que client smtp et d'après ce que je lis, ce serai au client Postfix de présenter un certificat ?

Je nage un peu la dedant, est-ce que quelqu'un a déjà mis une telle chose en place ?

Hors ligne

#5 Le 15/11/2006, à 23:32

chapi

Re : Envoyer mail depuis un script de façon simple (Postfix ?)

Bonsoir,

une nouvelle question concernant ce problème toujours pas résolu.

Est-il possible d'utiliser la commande mail si aucun serveur smtp ne tourne sur le machine ? Il est peut être possible d'utiliser un serveur smtp sur le réseau ou celui du FAI ?

Pour le problème avec TLS sur Postfix, j'ai trouvé une partie de solution. C'est effectivement ce que je supposais.

Il faut récupérer le certificat du serveur mail principal (cacert.pem par exemple), le sopier sur la machine faisant office de relai smtp et et configurer le serveur Postfix avec la ligne "smtp_tls_CAfile = /etc/postfix/cacert.pem".

Hors ligne