Diferencia entre revisiones de «Cyrus Imap»

De gacq wiki
Saltar a: navegación, buscar
(Quota monitoring and warning mail)
 
(No se muestran 5 ediciones intermedias del mismo usuario)
Línea 1: Línea 1:
 +
= Subpages =
 
*[[Cyrus - Basic Configuration]]
 
*[[Cyrus - Basic Configuration]]
 
*[[Cyrus - Exim4 configuration]]
 
*[[Cyrus - Exim4 configuration]]
Línea 4: Línea 5:
 
*[[Cyrus - Migrating from Courier-IMAP]]
 
*[[Cyrus - Migrating from Courier-IMAP]]
 
*[[Cyrus - LDAP]]
 
*[[Cyrus - LDAP]]
 +
= Utils =
 +
== Search and expunge a set of folders ==
 +
<pre>
 +
import imaplib
 +
 +
imap = imaplib.IMAP4()
 +
imap.login('manager', 'thepasswd')
 +
 +
for mbox in imap.list('', '*quotatest1*')[1]:
 +
    mailbox=mbox.split('"')[3]
 +
    imap.setacl(mailbox,'manager', 'lrswikxtecda')
 +
    print imap.select(mailbox)
 +
    print imap.expunge()
 +
    imap.setacl(mailbox,'manager', '')
 +
 +
</pre>
 +
 +
== Migrate mbolixt script ==
 +
<pre>
 +
import fileinput
 +
 +
for line in fileinput.input( "source-ctl_mboxlist-d" ):
 +
 +
  mailbox_end = line.find(".",5)
 +
  if ( mailbox_end == -1 ):
 +
    mailbox_end = line.find("\t",5)
 +
    folder = ""
 +
  else:
 +
    folder = line[mailbox_end+1:line.find("\t",mailbox_end)]
 +
 +
  mailbox=line[5:mailbox_end]
 +
 +
  if folder:
 +
    print "mailserver.gacq.com!user.%s.%s\t0 default %s@mailserver.gacq.com\tlrswipkxtecda\t" % (mailbox,folder,mailbox)
 +
  else:
 +
    print "mailserver.gacq.com!user.%s\t0 default %s@mailserver.gacq.com\tlrswipkxtecda\t" % (mailbox,mailbox)
 +
</pre>
 +
 +
== Recreate cyrus spool and database folders ==
 +
<pre>
 +
#rm -fr /var/spool/cyrus
 +
#rm -fr /var/lib/cyrus
 +
mkdir /var/spool/cyrus
 +
mkdir /var/lib/cyrus
 +
./cyrus-makedirs --cleansquat
 +
chown -R cyrus:mail /var/spool/cyrus
 +
chown -R cyrus:mail /var/lib/cyrus
 +
</pre>
 +
 +
== Quota monitoring and warning mail ==
 +
<pre>
 +
#!/bin/bash
 +
#
 +
 +
USERWARN=70
 +
 +
function send_warnmail {
 +
noti_mailbox=$1
 +
noti_used=$2
 +
/kolab/sbin/sendmail $noti_mailbox << EOM
 +
subject: ATENCION: La casilla $noti_mailbox esta al % $noti_used de su capacidad
 +
from: Mail server <postmaster@domain.com>
 +
to: $noti_mailbox
 +
 +
ATENCION: La casilla $noti_mailbox esta al % $noti_used de su capacidad
 +
 +
EOM
 +
}
 +
 +
/kolab/bin/cyrquota | while read line
 +
do
 +
  used=`echo $line | cut -d" " -f2`
 +
  mailbox=`echo $line | cut -d" " -f4 | cut -d"/" -f2`
 +
 +
  if [ "$used" != "%" ]
 +
  then
 +
      if [ $used -gt $USERWARN ] && [ $used -lt 100 ]
 +
      then
 +
          send_warnmail $mailbox $used
 +
      fi
 +
  fi
 +
done
 +
</pre>
 +
 +
== Quota monitoring - Admin report ==
 +
<pre>
 +
#!/bin/bash
 +
#
 +
 +
MAX=70
 +
ADMIN=admin@domain.com
 +
 +
function enviar_reporte {
 +
/kolab/sbin/sendmail $ADMIN << EOM
 +
subject: KOLAB - Informe de uso de casillas de correo
 +
from: Mail server <postmaster@domain.com>
 +
to: $ADMIN
 +
 +
    Casilla    -    Porcentaje usado
 +
#####################################
 +
`listar_llenas|sort -n -k3 -r`
 +
 +
EOM
 +
}
 +
 +
function listar_llenas {
 +
/kolab/bin/cyrquota | while read line
 +
do
 +
  used=`echo $line | cut -d" " -f2`
 +
  mailbox=`echo $line | cut -d" " -f4 | cut -d"/" -f2`
 +
 +
  if [ "$used" != "%" ]
 +
  then
 +
      if [ $used -gt $MAX ]
 +
      then
 +
          echo $mailbox - $used
 +
      fi
 +
  fi
 +
done
 +
}
 +
 +
enviar_reporte
 +
</pre>

Revisión actual del 18:05 27 sep 2010

Subpages

Utils

Search and expunge a set of folders

import imaplib

imap = imaplib.IMAP4()
imap.login('manager', 'thepasswd')

for mbox in imap.list('', '*quotatest1*')[1]:
    mailbox=mbox.split('"')[3]
    imap.setacl(mailbox,'manager', 'lrswikxtecda')
    print imap.select(mailbox)
    print imap.expunge()
    imap.setacl(mailbox,'manager', '')

Migrate mbolixt script

import fileinput

for line in fileinput.input( "source-ctl_mboxlist-d" ):

  mailbox_end = line.find(".",5)
  if ( mailbox_end == -1 ):
    mailbox_end = line.find("\t",5)
    folder = ""
  else:
    folder = line[mailbox_end+1:line.find("\t",mailbox_end)]

  mailbox=line[5:mailbox_end]

  if folder:
    print "mailserver.gacq.com!user.%s.%s\t0 default %s@mailserver.gacq.com\tlrswipkxtecda\t" % (mailbox,folder,mailbox)
  else:
    print "mailserver.gacq.com!user.%s\t0 default %s@mailserver.gacq.com\tlrswipkxtecda\t" % (mailbox,mailbox)

Recreate cyrus spool and database folders

#rm -fr /var/spool/cyrus
#rm -fr /var/lib/cyrus
mkdir /var/spool/cyrus
mkdir /var/lib/cyrus
./cyrus-makedirs --cleansquat
chown -R cyrus:mail /var/spool/cyrus
chown -R cyrus:mail /var/lib/cyrus

Quota monitoring and warning mail

#!/bin/bash
#

USERWARN=70

function send_warnmail {
noti_mailbox=$1
noti_used=$2
/kolab/sbin/sendmail $noti_mailbox << EOM
subject: ATENCION: La casilla $noti_mailbox esta al % $noti_used de su capacidad
from: Mail server <postmaster@domain.com>
to: $noti_mailbox

ATENCION: La casilla $noti_mailbox esta al % $noti_used de su capacidad

EOM
}

/kolab/bin/cyrquota | while read line
do
   used=`echo $line | cut -d" " -f2`
   mailbox=`echo $line | cut -d" " -f4 | cut -d"/" -f2`

   if [ "$used" != "%" ]
   then
      if [ $used -gt $USERWARN ] && [ $used -lt 100 ]
      then
          send_warnmail $mailbox $used
      fi
   fi
done

Quota monitoring - Admin report

#!/bin/bash
#

MAX=70
ADMIN=admin@domain.com

function enviar_reporte {
/kolab/sbin/sendmail $ADMIN << EOM
subject: KOLAB - Informe de uso de casillas de correo
from: Mail server <postmaster@domain.com>
to: $ADMIN

     Casilla    -    Porcentaje usado
#####################################
`listar_llenas|sort -n -k3 -r`

EOM
}

function listar_llenas {
/kolab/bin/cyrquota | while read line
do
   used=`echo $line | cut -d" " -f2`
   mailbox=`echo $line | cut -d" " -f4 | cut -d"/" -f2`

   if [ "$used" != "%" ]
   then
      if [ $used -gt $MAX ]
      then
          echo $mailbox - $used
      fi
   fi
done
}

enviar_reporte