Modification d'expression régulière

Bonjour à tous CCMien et merci de me lire

J'ai un souci avec une expression régulière ( encore :-( )
je recherche un peu d'aide si possible.

J'explique le problème :

j'ai actuellement une expression régulière utiliser dans un fichier de conf exim4 pour faire tourner un serveur mail, cette expression régulière fait en sorte d'envoyer chaque mail avec une ip différente (9 IP disponible au total)

La voici :
xxx.xxx.xxx.3${eval:${substr{-2}{1}{$tod_zulu}}%7+0}


il prend donc l'ip xxx.xxx.xxx.30 jusque xxx.xxx.xxx.39

j'aimerais "simplement" réduire le nombre d'ip a 5, le problème c'est que cette fois les 5 ip ne ce suives pas, voici un exemple :

158.33.17.232
158.33.17.234
158.32.163.112
158.32.163.115
158.32.163.118

Quelqu'un aurait une solution ?

lami20j t'es dans le coin ?

Merci d'avance pour toute intervention
Cordialement
Jhoni

13 réponses

Résumé de la discussion

Une expression régulière utilisée dans la configuration d'Exim4 permettait d'envoyer chaque mail depuis une IP différente sur un pool de 9 adresses, mais l'utilisateur souhaite réduire ce pool à 5 IP non consécutives. Des échanges soulignent des difficultés comme l'erreur main option 'interface unknown' dans /var/lib/exim4/config.autogenerated.tmp et la vérification de l'expansion d'une chaîne plutôt que d'une vraie regex. Plusieurs messages expliquent que $tod_zulu et substr jouent un rôle dans l'obtention de l'index IP et qu'il s'agit d'une expansion de chaîne, pas d'une construction regex. D'autres remarques demandent le fichier complet et indiquent d'examiner les logs mainlog et paniclog pour clarifier le diagnostic et tester une approche alternative avec une seule barre oblique.

Bobot (l’IA à votre service)
  1. Modérateur
    Salut,

    Il s'agit bien des 5 ip que tu as affichées ou c'est aléatoire?

    lami20j
    0
    1. Salut :-)

      oui 5 IP qui ne se suive pas comme l'exemple plus haut
      0
      1. les 5 IP dans l'exemple plus haut sont en faite les bonnes IP mise a part les 3 premiers chiffres (158) de départ afin de masquer les IP sur le forum


        petit a petit !!
        0
        1. Modérateur
          Salut,

          L'exemple en dur

          lami20j@debian-acer:~$ cat ip
          73.25.100.32
          158.33.17.232
          158.33.17.234
          158.32.163.112
          158.32.163.115
          158.32.163.118
          192.168.0.1
          10.0.0.200
          lami20j@debian-acer:~$ egrep -o '158\.3[23]\.1(7|63)\.(11[258]|23[24])' ip
          158.33.17.232
          158.33.17.234
          158.32.163.112
          158.32.163.115
          158.32.163.118

          0
          1. Salut lami20j

            Je viens de testé et je reçois :

            "'158.3[23].1(7|63).(11[258]|23[24])'" is not a valid IP address for the "interface" option for remote_smtp transport


            0
            1. Je pense que pour que cette regexp fonctionne il faut un fichier "IP" ou stocker les IP et la c'est pas le cas ....
              0
              1. Modérateur
                Tu utilises un fichiers de configuration qui contient les IP dans une variable et les IP cherchées sont seulement les 5 que tu as définies.

                La regex devrait être adaptée à ton cas en effet, mais il faut connaître un peu mieux ton cas.
                0
            2. a mon avis et ce n'est que mon avis...

              ce fichier de conf d'exim4 cherche la variable "interface" qui doit suivre d'une adresse IP comme l'exemple plus haut.

              Normalement le fichier de conf d'origine est comme ceci :

              interface = xxx.xxx.xxx.xxx

              pour une rotation de 9 IP il a été transformé comme ceci :

              interface = xxx.xxx.xxx.3${eval:${substr{-2}{1}{$tod_zulu}}%7+0}


              0
              1. Modérateur
                pour une rotation de 9 IP il a été transformé comme ceci :

                Par qui?
                0
            3. par google

              c'est une astuce que j'ai trouver sur deux ou trois forums et qui marche bien
              0
              1. Modérateur
                Alors je ne comprends pas ce que tu veux ;-(
                0
            4. :-(

              J'essaye de faire plus simple.

              Cette ligne dans le fichier de conf d'exim4 permet de stipuler l'adresse IP du serveur envoyeur du mail :
              interface = xxx.xxx.xxx.xxx

              Afin de pouvoir envoyer des mails depuis plusieurs IP on la modifie comme ceci :
              interface = xxx.xxx.xxx.3${eval:${substr{-2}{1}{$tod_zulu}}%7+0}

              Je pense que cette ligne fait un décompte en ordre croissant ou bien un tri aléatoire et envoie chaque mail avec une IP différente comme ceci :
              1er mail envoyer depuis l'IP    : xxx.xxx.xxx.30
              2em mails envoyer depuis l'IP : xxx.xxx.xxx.31
              3em mails envoyer depuis l'IP : xxx.xxx.xxx.32
              

              et ainsi de suite jusqu'au 10em mails qui sera donc envoyer avec l'IP xxx.xxx.xxx.39

              Le but est d'envoyer les mails comme ceci :
              1er mail envoyer depuis l'IP : 158.33.17.232
              2em mails envoyer depuis l'IP : 158.33.17.234
              3em mails envoyer depuis l'IP : 158.32.163.112
              4em mails envoyer depuis l'IP : 158.32.163.115
              5em mails envoyer depuis l'IP : 158.32.163.118

              J'espère que c'est plus claire comme ça.

              Merci ;-)
              0
              1. Modérateur
                Je pense que cette ligne fait un décompte en ordre croissant ou bien un tri aléatoire et

                Il ne faut pas penser, mais s'informer ;-)
                http://www.exim.org/exim-html-current/doc/html/spec_html/ch11.html

                $tod_zulu 
                
                    This variable contains the UTC date and time in "Zulu" format, as specified by ISO 8601, for example: 20030221154023Z.


                Prenons la valeur en gras

                ${substr{-2}{1}{$tod_zulu}}%7+0} =>
                $tod_zulu = 20030221154023Z
                ${substr{-2}{1}{20030221154023Z} donne 3 (on commence à partir de la fin -2 et la longueur 1
                3%7 égal 3
                3 + 0 = 3
                ensuite eval c'est pour convertir 3 en numérique

                Donc ce n'est pas un tri mais une recherche d'IP par rapport au time donné par la variable $tod_zulu
                0
            5. Modérateur
              Essai

              interface = 158\\.3[23]\\.1(7|63)\\.(11[258]|23[24])
              0
              1. WAW

                je teste et reviens au news de suite
                0
                1. 158\.3[23]\.1(7|63)\.(11[258]|23[24])" is not a valid IP address for the "interface" option for remote_smtp transport

                  :-(
                  0
                  1. Modérateur
                    Affiche le résultat de
                    grep interface ton_fichier_config_exim
                    0
                2. fichier modifier avec ta regexp :
                  root@servm:/etc/exim4# grep interface exim4.conf.template
                  # listen on all all interfaces?
                  local_interfaces = MAIN_LOCAL_INTERFACES
                  # where you define the interface to your scanner. This example is typical
                  # For spam scanning, there is a similar option that defines the interface to
                  interface = 158\\.3[23]\\.1(7|63)\\.(11[258]|23[24])


                  fichier d'origine :
                  # listen on all all interfaces?
                  local_interfaces = MAIN_LOCAL_INTERFACES
                  # where you define the interface to your scanner. This example is typical
                  # For spam scanning, there is a similar option that defines the interface to
                  interface=158.33.17.232


                  fichier modifier avec la regexp trouver sur un forum :
                  # listen on all all interfaces?
                  local_interfaces = MAIN_LOCAL_INTERFACES
                  # where you define the interface to your scanner. This example is typical
                  # For spam scanning, there is a similar option that defines the interface to
                  interface=105.230.233.3${eval:${substr{-2}{1}{$tod_zulu}}%7+0}
                  0
                  1. Modérateur
                    Je ne peux plus rester.
                    On va continuer demain si ça ne te dérange pas.

                    fichier modifier avec la regexp trouver sur un forum :
                    En tous cas ce n'est une regex mais string expansion.
                    Essai la regex avec un seul slash.
                    0
                  2. ;-) thanks
                    0
                  3. interface = 158\\.3[23]\\.1(7|63)\\.(11[258]|23[24])
                    a quel moment un seul slash ?

                    a demain ;-)
                    0
                  4. petit UP cordial....
                    0