Notification postfix ou dovecot

Bonsoir,

Comme j’ai plusieurs boites mèl sur deux différents domains. J’aimerai que mon serveur me notifie quand il y a un nouveau mèl. Cela m’éviterai de faire des grep sur mail.log pour voir dans quelle boite il y a un message …
Savez-vous s’il y a un paramétrage à faire quelque part permettant d’envoyer une notification dès qu’un mèl rentre ?
Il me semble que dovecot ne sait pas quand un mèl rentre, il faut que le client l’interroge pour qu’il regarde. Par contre postfix log bien les entrées de mèls…

Merci

En gros tu veux recevoir un mail, pour t’avertir que tu as reçu un mail? :033

Pourquoi ne pas paramétrer les boîtes mail concernées (en IMAP) sur ton client de mail? Icedove & co savent très bien gérer plusieurs comptes.

Ou alors, tu peux faire un forward de toutes tes adresses mail vers une autre adresse.

Je m’y attendais un peu.

J’ai environ 8 boites mèls. C’est en fonction des thèmes ou activités. J’utilise roudcube/IMAP.
YAKA saisir 8 login et 8 mots de passe, une ou deux fois par jour. C’est simple non ?
Je ne veux pas non plus forwarder tous mes mèls vers une seule boite ou tout les sujets seront mélangés :038

J’ai pensé à une simple notification m’indiquant qu’un nouveau mèl est arrivé dans telle boite. (un programme en perl doit pouvoir faire cela facilement…)

Avec ma boite perso (postfix) relayée par Icedove, à chaque arrivée de message, j’ai une notification qui m’annonce le titre de la boite.
Je n’en ai qu’une sur postfix donc je ne prête pas attention à ce qui y est écrit mais je suppose que s’il y en avait plusieurs, le titre serait différent. Mais tout ça, c’est du KDE.

C’est ça! avoir une notification qui attire l’attention sur l’arrivée d’un mail. C’est déjà sympa de l’avoir quand on a une seule boite mail. C’est encore mieux lorsque l’on a plusieurs.

Je prends un exemple au hasard. Mr Y reçoit un message sur l’une de ses boites mail lui indiquant que son ordre de bourse vient d’être exécuté. en // un membre de sa famille lui envoie un message perso…etc.
Mr Y n’a pas envie de mélanger tout les sujets dans une même boite. Il veut juste être notifié de l’arrivée du message. Il le lira après s’il a envie de rester concentré sur ce qu’il fait à ce moment là.
On lui conseillera tout de même pas de se connecter à toutes ses boites pour voir s’il y a un nouveau message.
C’est curieux, cela me rappelle un vieux (vraiment ancien) sujet sur le fait que certains programmes en C faisaient du pooling au lieu d’exploiter les interruptions matérielles… (lorsque la data est arrivée, le hard génère a un signal d’IT, la routine d’IT correspondante traite l’info).

Personnellement j’utilise l’astuce moi+etiquette@adresse.com, pour faire un filtrage de 1er niveau, tout en utilisant une seule boîte.

Cela nécessite bien sûr lors de l’inscription sur un site dont on reçoit des mails, de spécifier cette forme d’adresse mail.

ex. pour debian-fr, mon adresse serait moi+debianfr@adresse.com

après on peut rajouter dans roundcube des filtres pour placer automatiquement les mails dans les bons dossiers.

C’est fait automatiquement, et c’est même plutôt penser a afficher les dossiers ainsi créé car par défaut ils ne le sont pas.

Il est possible de faire des redirections de domaines avec Postfix ce qui permet de ne pas se soucier du domaine que l’on donne.

et pourquoi pas un client lourd de messagerie connecté en imap sur chacune des boite ? genre kmail ?

c’est ce que j’utilise chez moi et je peux voir toutes les boites de tous les serveurs différents dans une seule fenêtre :astonished:)

Client lourd. C’est bien ce que je faisait avant lorsque j’avais mes comptes emails chez 2 ou 3 noms bien connus dans le domaine.
Comme un hobby ou DIY (do it your self), j’ai “bricolé”, si on peut m’excuser du terme, UN serveur de mèls avec ce qui va autour pour assurer un minimum de sécurité, anti SPAM, relais fermé…etc, + apache à coté. C’est pourquoi je m’enquiquine a utiliser un client léger, comme roudcube, aprés avoir utilisé squirrelmail.
En regardant les logs de postfix, je me dis que toutes les infos que veux sont dedans. Il suffit donc de savoir les extraire et les coordonner. Je n’aurai pas le temps d’apprendre un langage comme Perl pour faire un programme qui par exemple sera lancé par un cron et qui m’enverra une notification sur mon téléphone ou sur un autre machin.

Je sais que pour Roundcube il existe un plug-in qui affiche une popup et emmet un son à la reception d’un mail … a voir de ce coté :wink:

ce n’est pas pour rien qu’il existe des logiciels du genre fetchmail ou autres (fonctionalité aussi intégrée à certains webmails), qui se chargent de récupérer le courrier de plusieurs comptes, vers une boîte unique :stuck_out_tongue:

Ok, j’installe wine/outlook ou KDE/kmail :slightly_smiling:

Ou Icedove !

Icedove est la version thunderbird renommée par débian.
Avant que j’installe un client lourd, J’essayerai d’abord de faire un petit script, très simple qui analyse mail.log toutes les 5 minutes, lancé par cron, qui générera une notification. La notification en elle même peut être un petit programme existant qui sera lancé. Il faut que cela reste très peu gourmand en ressources. Le client lourd ça va pas le faire.

ou Sylpheed qui est très léger (pour un client lourd :stuck_out_tongue: )

Bonsoir,

Je reviens sur ce sujet après quelques jours/semaines d’absence. Je me suis un peu aventuré avec Perl et les expressions régulières. Je me suis fait aider, bien entendu, sur ces dernières.
Pour la consultation de mes mèls à partir de l’extérieur, la solution des clients mail comme kmail ou Icedove, euh…outlook, etc… n’est pas pratique. Car, il faut qu’il y ait déjà un client mail d’installé sur le PC du quel je consulte mes mèls et même dans ce cas, je ne touche pas à sa configuration. Le webmail est plus adapté dans ce cas. Navigateur->roundcube sur apache2 en https->dovecot.
Pour rappeler le problème : J’ai plusieurs boites mèls (une dizaine, c’est en fonction de l’activité, elles doivent être distictes) et je n’ai pas envie de les ouvrir toutes pour voir s’il y a un mèl ou pas. J’ai donc fait un programme simple qui me dira si un mèl est arrivé et dans quelle boite.

Voici le programme pour info. Il n’est pas forcément optimisé. N’hésitez pas à me proposer des modifications.

!/usr/bin/perl
use strict;
use warnings;

my $date;
#my $client_ip;
my $mail_from;
my $mail_to;

open(my $FILE, “<”, “/var/log/mail.log”) or die “je n’ai pas pu ouvrir le fichier mail.log: $!; aborting”;

Lecture entière du fichier mail.log. Cela servira plus tard pour les stats par exemple.

while (<$FILE>) {
if ($_ =~ /(\S+ .* \d+:\d+:\d+) .* postfix/smtpd[.*]$/)
{
$date = $1;

print “\n”;

print “date: \t”, $date,"\n";

    }

elsif ($_ =~ /.* postfix/qmgr[.*]: (\S+): from=<(\S+)>/)#(Je n’utiliserai peut être pas la première capture)
{
$mail_from = $2;

print “mail_from: \t”, $mail_from,"\n";

    }

elsif ($_=~/.* postfix/smtp[.*]: (\S+): to=<(\S+)>/)
{
$mail_to = $2;

print “mail_to: \t”, $mail_to,"\n";

    }

}
close(FILE);

my $to;
my $from;
my $subject;
my $message;

$to = 'newmail@autredomaine.fr’;
$from = 'root@domaine.fr’;
$subject = ‘Nouveau message’;

open(MAIL, “|/usr/sbin/sendmail -t”);

L’entête du mèl

print MAIL “To: $to\n”;
print MAIL “From: $from\n”;
print MAIL “Subject: $subject\n\n”;
#print MAIL “Content-type: text/html\n”;

Le corps du mèl. Il ne contient que le dernier mèl reçu. (dernier “tour” de la boucle while)

print MAIL “Date : “,$date,”\n”,"\n";
#print MAIL “Adresse IP : “,$client_ip,”\n”,"\n";
print MAIL “De : “,$mail_from,”\n”,"\n";
print MAIL "A : ",$mail_to;
close(MAIL);
#print “mèl envoyé\n”;

Ma question :
Comment lancer ce programme à chaque fois qu’une ou plusieurs lignes s’écrivent dans mail.log ?
(Je modifierai les expressions régulières plus haut pour rajouter un test sur autredomaine.fr, si non ma boite mèl des notifications sera polluée par n’importe par quel mail du système)

noah.org/wiki/Inotify,_FAM,_Gamin

Merci

Bonsoir,

En lisant par-ci par-là, j’ai croisé la commande logtail. Cette fonction est intéressante car lorsque l’on lit avec un fichier, elle positionne automatiquement un marqueur à la fin. Une deuxième relecture du même fichier démarre donc à l’endroit pointé par ce marqueur et ainsi de suite.

Du coup, si des lignes se rajoutent dans mon fichier mail.log, après la précédente lecture, je “chope” le ou les mail(s) qui vient/viennent d’arriver.
yaka rediriger dans un fichier temporaire et appliquer un script dessu…

yapa un spécialiste, même débutant sur les expressions régulières ? promis, je les aime bien :slightly_smiling: , ce n’est pas le soucis. Mais bon, ça ne se maîtrise pas comme ça vite fait :wink:

Le problème qui se posera à un moment donné est que lorsque je m’envoie une notification comme quoi un nouveau mèl est arrivé dans l’une de mes 10 boites mèls, mon programme m’en informera de cette notification, puisqu’elle constitue en elle même un mèl qui vient d’arriver. ça s’auto alimente tout seul :laughing:

Il faut donc que j’intègre une petite fonction filtre à mon script cité plus haut qui supprime les mèls avec une adresse source 127.0.0.1.