GNU/Linux >> Tutoriales Linux >  >> Panels >> Panels

ISPConfig 2.x:Cómo agregar una opción "Mover a SPAM" a su instalación de ISPConfig

ISPConfig 2.x:Cómo agregar una opción "Mover a SPAM" a su Instalación de ISPConfig

Versión 1.0b
Autor:Jens Groh

Resumen:

Este documento describe los pasos necesarios para agregar una tercera estrategia de filtrado de spam a su instalación de ISPConfig 2.x. Le permitirá a usted y a sus usuarios seleccionar si desean eliminar el spam, permitir el spam o moverlo a la carpeta de correo no deseado IMAP correspondiente.

Este tutorial se inspiró en el hilo del foro de 'grant' (https://www.howtoforge.com/forums/showthread.php?t=15704) que describió el intercambio de la estrategia de soltar con el movimiento. Si sigue los pasos a continuación, no reemplazará el método de soltar, sino que obtendrá un tercero.

Requisitos previos:

En este instructivo, asumiré que está utilizando la siguiente configuración o una similar:

  • ISPConfig (v2.2.23 o posterior)
  • Al menos un dominio con un buzón configurado y funcionando
  • IMAP está usando el formato Maildir (¡esto no funcionará con mbox!)

Paso 1 - Cambio de formularios

El primer paso es iniciar sesión en su Panel ISPConfig con el Administrador cuenta. Luego ingrese a la Administración pestaña y abra el FormDesigner con Editar formulario . Buscar isp - Usuario ISP y haga clic en editar .
Ahora debería ver la descripción completa del formulario de ese formulario en particular. Busque spam_strategy y presiona editar de nuevo.
Ahora cambie la Lista de valores de ese elemento de formulario insertando una línea para nuestra opción de movimiento futuro para que muestre:

accept,accept;
move,move;
discard,discard;
y guarde ese formulario. Sus opciones de usuario de correo en su dominio ahora deberían mostrar esa nueva opción en el cuadro desplegable de estrategia de spam, aunque todavía no tiene ninguna función. Ahora, para la parte de la consola:vamos a editar algunos archivos ISPConfig, para darle vida a la nueva opción.

Paso 2:edición de archivos fuente de ISPConfig

Ahora tenemos que editar un montón de archivos. Los escribiré y explicaré más adelante:

vi/root/ispconfig/scripts/lib/classes/ispconfig_procmail.lib.php

(alrededor de la línea 109):
         if(!is_dir($web_path."/user/".$user_username."/Maildir"))
$mod->log->caselog("maildirmake
".$web_path."/user/".$user_username."/Maildir &> /dev/null", "maildirmake
".$web_path."/user/".$user_username."/Maildir &> /dev/null", __LINE__);
        // ADD: create IMAP subfolders
        if(!is_dir($web_path."/user/".$user_username."/Maildir/.Drafts"))
$mod->log->caselog("maildirmake
".$web_path."/user/".$user_username."/Maildir/.Drafts &> /dev/null",
"maildirmake ".$web_path."/user/".$user_username."/Maildir/.Drafts &>
/dev/null", __LINE__);
        if(!is_dir($web_path."/user/".$user_username."/Maildir/.Junk"))
$mod->log->caselog("maildirmake
".$web_path."/user/".$user_username."/Maildir/.Junk &> /dev/null",
"maildirmake ".$web_path."/user/".$user_username."/Maildir/.Junk &>
/dev/null", __LINE__);
        if(!is_dir($web_path."/user/".$user_username."/Maildir/.Sent"))
$mod->log->caselog("maildirmake
".$web_path."/user/".$user_username."/Maildir/.Sent &> /dev/null",
"maildirmake ".$web_path."/user/".$user_username."/Maildir/.Sent &>
/dev/null", __LINE__);
        if(!is_dir($web_path."/user/".$user_username."/Maildir/.Trash"))
$mod->log->caselog("maildirmake
".$web_path."/user/".$user_username."/Maildir/.Trash &> /dev/null",
"maildirmake ".$web_path."/user/".$user_username."/Maildir/.Trash &>
/dev/null", __LINE__);
 
     if(!is_dir($web_path."/user/".$user_username."/Maildir"))
$mod->log->phpcaselog(mkdir($web_path."/user/".$user_username."/Maildir",
0700), "create ".$web_path."/user/".$user_username."/Maildir", $this->FILE,
__LINE__);
 
        // ADD: create IMAP subfolders
        if(!is_dir($web_path."/user/".$user_username."/Maildir/.Drafts"))
$mod->log->phpcaselog(mkdir($web_path."/user/".$user_username."/Maildir/.Drafts",
0700), "create ".$web_path."/user/".$user_username."/Maildir/.Drafts",
$this->FILE, __LINE__);
        if(!is_dir($web_path."/user/".$user_username."/Maildir/.Junk"))
$mod->log->phpcaselog(mkdir($web_path."/user/".$user_username."/Maildir/.Junk",
0700), "create ".$web_path."/user/".$user_username."/Maildir/.Junk",
$this->FILE, __LINE__);
 	if(!is_dir($web_path."/user/".$user_username."/Maildir/.Sent"))
$mod->log->phpcaselog(mkdir($web_path."/user/".$user_username."/Maildir/.Sent",
0700), "create ".$web_path."/user/".$user_username."/Maildir/.Sent",
$this->FILE, __LINE__);
 	if(!is_dir($web_path."/user/".$user_username."/Maildir/.Trash"))
$mod->log->phpcaselog(mkdir($web_path."/user/".$user_username."/Maildir/.Trash",
0700), "create ".$web_path."/user/".$user_username."/Maildir/.Trash",
$this->FILE, __LINE__);
 
     exec("chown -R ".$user_username.":web".$web_doc_id."
".$web_path."/user/".$user_username."/Maildir");
     exec("chmod 700 ".$web_path."/user/".$user_username."/Maildir");
 
 	// ADD: create IMAP subfolders
 	exec("chown -R ".$user_username.":web".$web_doc_id."
".$web_path."/user/".$user_username."/Maildir/.Drafts");
 	exec("chmod 700 ".$web_path."/user/".$user_username."/Maildir/.Drafts");
 	exec("chown -R ".$user_username.":web".$web_doc_id."
".$web_path."/user/".$user_username."/Maildir/.Junk");
 	exec("chmod 700 ".$web_path."/user/".$user_username."/Maildir/.Junk");
 	exec("chown -R ".$user_username.":web".$web_doc_id."
".$web_path."/user/".$user_username."/Maildir/.Sent");
 	exec("chmod 700 ".$web_path."/user/".$user_username."/Maildir/.Sent");
 	exec("chown -R ".$user_username.":web".$web_doc_id."
".$web_path."/user/".$user_username."/Maildir/.Trash");
 	exec("chmod 700 ".$web_path."/user/".$user_username."/Maildir/.Trash");
 
     if($user["user_admin"]){
       exec("rm -f $web_path/Maildir &> /dev/null");
      
$mod->log->phpcaselog(@symlink($web_path."/user/".$user_username."/Maildir",
$web_path."/Maildir"), "symlink ".$web_path."/Maildir", $this->FILE,
__LINE__);

(alrededor de la línea 300)
   $mod->tpl->define( array(table    => "spamassassin.rc.master"));
 
   if(!isset($user["spam_strategy"])) $user["spam_strategy"] = "accept";

   if($user["spam_strategy"] == "accept"){
     $spam_comment = "#";
     $spam_command = ".Junk/";
   } else {
     $spam_comment = "";
     if($user["spam_strategy"] == "discard"){
       $spam_command = "/dev/null";
     } else {
       $spam_command = ".Junk/";
     }
   }

(alrededor de la línea 330)
  
if(is_file('/home/admispconfig/ispconfig/tools/spamassassin/usr/local/bin/spamassassin')){
@@ -302,6 +333,7 @@
   // Variablen zuweisen
   $mod->tpl->assign( array(PREFS_FILE =>
$web_path."/user/".$user_username."/.user_prefs",
                            SPAM_COMMENT => $spam_comment,
                            SPAM_COMMAND => $spam_command,
                            SPAMASSASSIN_PATH => $spamassassin_path,
                                                    USERNAME =>
$user_username));

Esto agrega funcionalidad básica. El cambio agrega a los usuarios buzones estándar de Maildir como Papelera, Enviados, Correo no deseado y Borradores cada vez que se crea un usuario de correo, podemos mover el spam a la carpeta de correo no deseado correspondiente.

Busque y agregue la cadena de movimiento en los siguientes archivos como se muestra:

vi/home/admispconfig/ispconfig/lib/classes/ispconfig_isp_user.lib.php

(alrededor de la línea 102)
                         $doc->deck[1]->elements[11]->visible = 0;
                  }
                  $doc->deck[2]->elements[2]->values["accept"] =
$go_api->lng("txt_accept");
                  $doc->deck[2]->elements[2]->values["move"] =
$go_api->lng("txt_move");
                  $doc->deck[2]->elements[2]->values["discard"] =
$go_api->lng("txt_discard");
         }

vi/home/admispconfig/ispconfig/web/mailuser/mail/table/user.table.php

(alrededor de la línea 135)
                                                                   'regex' 
                      => "",
                                                                   'errmsg'
               => "",
                                                                   'value' 
               => array(        "accept" => $app->lng("txt_accept"),
                                                                           
                                             "move"    =>
$app->lng("txt_move"),
                                                                           
                                             "discard" =>
$app->lng("txt_discard")));
 
 $table['spam_hits'] = array('datatype'                 => "VARCHAR",

vi/home/admispconfig/ispconfig/web/mailuser/lib/lang/ .lng

(ejemplo para en.lng, alrededor de la línea 33)
 $wb["txt_accept"] = "accept";
 $wb["txt_move"] = "move";
 $wb["txt_discard"] = "discard";

vi/home/admispconfig/ispconfig/web/isp_manager/lib/lang/ .lng

(ejemplo para en.lng, alrededor de la línea 268 y la línea 452)
 $wb["Spamfilter"] = 'Spamfilter';
 $wb["Antivirus"] = 'Antivirus';
 $wb["accept"] = 'accept';
 $wb["move"] = 'move';
 $wb["discard"] = 'discard';
 $wb["Spam Strategie"] = 'Spam Strategy';
 $wb["Spam Hits"] = 'Spam Hits';
(...)
 $wb["Keine Vorlage verwenden"] = "Individual Settings";
 $wb["Keine Vorlage vorhanden"] = "No Hostingplan Available";
 $wb["txt_accept"] = "accept";
 $wb["txt_move"] = "move";
 $wb["txt_discard"] = "discard";
 $wb["Eigenschaften"] = "Properties";
 $wb["ISP Datenbank"] = "ISP Database";

vi/home/admispconfig/ispconfig/web/isp_kunde/lib/lang/ .lng

(ejemplo para en.lng, alrededor de la línea 268 y la línea 449)
 $wb["Spamfilter"] = 'Spamfilter';
 $wb["Antivirus"] = 'Antivirus';
 $wb["accept"] = 'accept';
 $wb["move"] = 'move';
 $wb["discard"] = 'discard';
 $wb["Spam Strategie"] = 'Spam Strategy';
 $wb["Spam Hits"] = 'Spam Hits';
(...)
 $wb["Keine Vorlage verwenden"] = "Individual Settings";
 $wb["Keine Vorlage vorhanden"] = "No Hostingplan Available";
 $wb["txt_accept"] = "accept";
 $wb["txt_move"] = "move";
 $wb["txt_discard"] = "discard";
 $wb["Eigenschaften"] = "Properties";
 $wb["ISP Datenbank"] = "ISP Database";

Los últimos tres cambios que debe hacer por archivo de idioma o su interfaz solo mostrarán mover en lugar del término correspondiente en su idioma. Los tres fragmentos de ejemplo son de los archivos en.lng en esos directorios, edite otros idiomas de la misma manera (inserte el mover entradas entre los demás).

Paso 3:crear plantillas personalizadas

Ahora cambie a /root/ispconfig/isp/conf directorio y cree una copia personalizada de spamassassin.rc.master :

cd /root/ispconfig/isp/conf
cp -pr spamassassin.rc.master ./customized_templates/cd customized_templates

Ahora edite la plantilla personalizada para reflejar los cambios necesarios:

# All mail tagged as spam (eg. with a score higher than the set threshold)
# is moved to "/dev/null".
{SPAM_COMMENT}:0:
{SPAM_COMMENT}* ^X-Spam-Status: Yes
{SPAM_COMMENT}{SPAM_COMMAND}

Paso 4 (opcional):implementar la limpieza de sus carpetas de basura y spam

Esto ya ha sido abordado por MuisjeNL en el siguiente HowTo:Limpieza automática de basura y/o carpetas basura con ISPConfig (Con Roundcube +Tmpreaper / Tmpwatch)

Paso 5 (opcional):implemente algo de facilidad de uso y cree mensajes de estado

Esto está bajo un fuerte desarrollo ya que estamos usando un perlcode bastante pirateado en este momento. Intentaré limpiar eso o transferirlo a un script bastante pequeño.

Conclusión

Así que ahora puede agregar un usuario de correo (o cambiar uno existente) para usar el nuevo mover método. Lo probé con un usuario que recibía entre 100 y 200 correos no deseados al día y cambié su estrategia para mover . Con un cubo redondo similar a un correo web o conectándome al buzón a través de IMAP, casi obtuve resultados inmediatos ya que los primeros correos cayeron en la carpeta de correo no deseado en lugar de en su bandeja de entrada.

Asegúrese de verificar esto antes de ejecutarlo en servidores de producción.
Este tutorial no tiene garantía alguna. ¡Sé sabio, pruébalo!

Como este es el primer HowTo sobre HowtoForge para mí (y no soy hablante nativo), espero que no tenga problemas para adaptarlo a sus necesidades. Diviértete con un gran Software:ISPConfig !

Jens Groh para SANlutions Ltd.


Panels
  1. ¿Cómo maneja Linux múltiples separadores de rutas consecutivas (/home////username///file)?

  2. Debian – ¿Mover /var, /home a una partición separada?

  3. ¿Cómo cambiar los puntos de montaje?

  4. ¿Cómo se actualiza /etc/motd?

  5. Kubuntu muestra un error al iniciar sesión (file:///usr/share/sddm//themes/breeze/main.qml:no such file or directory)?

“No se puede crear el directorio de caché /home//.composer/cache/repo/https—packagist.org/, o el directorio no se puede escribir. Procediendo sin caché”?

¿Cómo identificar la versión de Plesk?

Cómo systemd-tmpfiles limpia /tmp/ o /var/tmp (reemplazo de tmpwatch) en CentOS/RHEL 7

Instalar binarios en /bin, /sbin, /usr/bin y /usr/sbin, interacciones con --prefix y DESTDIR

¿Cuándo debo usar /dev/shm/ y cuándo debo usar /tmp/?

Cómo cambiar el valor predeterminado /tmp a /home/user/tmp