Mi cola de correo está actualmente llena de mensajes devueltos para el mismo dominio, pero en mayúsculas y minúsculas mixtas.
Intenté usar exiqgrep
para filtrar estos correos de mi cola, pero parece que el comando distingue entre mayúsculas y minúsculas.¿Hay alguna forma de realizar una búsqueda que no distinga entre mayúsculas y minúsculas?
Respuesta1
Como señaló el otro caballero, el programa exiqgrep es sólo un script en Perl. Toma el valor sin procesar pasado a la función -r (destinatario) y lo utiliza en una coincidencia de patrón. La coincidencia de patrón es una $rcpt =~ /$opt{r}/
prueba de Perl simple; la coincidencia predeterminada, dado que no está especificada, distingue entre mayúsculas y minúsculas.
Como ocurre con todo lo relacionado con Perl, TIMTOWTDI (Hay más de una forma de hacerlo). Dado que la función anterior no elimina ni desinfecta el valor pasado a -r, simplemente puede incrustar un modificador de ignorar mayúsculas y minúsculas en la expresión regular. Consulte perldoc perlre
para obtener más detalles sobre cómo (?MODIFIERS:...)
funciona la secuencia.
Aquí hay un ejemplo donde muestro que una búsqueda mixta no encuentra el dominio que estoy buscando, pero al usar un modificador de bandera en línea como parte del término de búsqueda, lo encuentra.
OVZ-CentOS58[root@ivwm51 ~]# exiqgrep -r '[email protected]'
26h 4.0K 1VGRud-0001sm-P1 <> *** frozen ***
[email protected]
OVZ-CentOS58[root@ivwm51 ~]# exiqgrep -r '[email protected]'
OVZ-CentOS58[root@ivwm51 ~]# exiqgrep -r '(?i:[email protected])'
26h 4.0K 1VGRud-0001sm-P1 <> *** frozen ***
[email protected]
Su búsqueda será similar, algo como:
(?i:@thedomainyouseek.com)
Respuesta2
Elpágina de manualno muestra dicha opción, pero la exiqgrep
utilidad es un perl
script cuya fuente puedemodificar para adaptarlo a sus necesidades:
114 sub selection() {
115 foreach my $msg (keys(%id)) {
116 if ($opt{f}) {
117 # Match sender address
118 next unless ($id{$msg}{from} =~ /$opt{f}/); # here
119 }
120 if ($opt{r}) {
121 # Match any recipient address
122 my $match = 0;
123 foreach my $rcpt (@{$id{$msg}{rcpt}}) {
124 $match++ if ($rcpt =~ /$opt{r}/); # or here
125 }
126 next unless ($match);
127 }
128 if ($opt{s}) {
129 # Match against the size string.
130 next unless ($id{$msg}{size} =~ /$opt{s}/);
131 }
132 if ($opt{y}) {
133 # Match younger than
134 next unless ($id{$msg}{ages} $opt{o});
139 }
140 if ($opt{z}) {
141 # Exclude non frozen
142 next unless ($id{$msg}{frozen});
143 }
144 if ($opt{x}) {
145 # Exclude frozen
146 next if ($id{$msg}{frozen});
147 }
148 # Here's what we do to select the record.
149 # Should only get this far if the message passed all of
150 # the active tests.
151 $id{$msg}{d} = 1;
152 # Increment match counter.
153 $mcount++;
154 }
155 }