Should you need to purge a large set of users from your Atmail system, you can use the purge-users-csv.php script to batch delete via a CSV file.You will find the script at /usr/local/atmail/webmail/utilities/tools/purge-users-csv.php.
The usage is simple:
[root@ test ~] # cd /usr/local/atmail/webmail/utilities/tools/ [root@ test tools] # php purge-users-csv.php Usage: php delete- users -csv.php [ /path/to/users .csv] [admin-username] |
Where /path/to/users.csv contains a list of users, seperated by a newline.
Example
account1@domain.com account2@domain.com account3@domain.com |
This script will remove all the users database entries, clear the users maildir and purge the account from the system.
<?php /* * Copyright (c) 2009-2010 ATMAIL. All rights reserved * See http://atmail.com/license.php for license agreement */ /** * Delete users from csv file * * csv format: * username * * @author : Ben Duncan */ require_once ( '../nfc-bootloader.php' ); require_once ( 'Mail/RFC822.php' ); if ( $_SERVER [ 'argc' ] < 3) { die ( "Usage: php delete-users-csv.php [/path/to/users.csv] [admin-username]\n" ); } $file = $_SERVER [ 'argv' ][1]; if ( is_file ( $file ) && ! $fh = fopen ( $file , 'r' )) { die ( "Could not open $file\n" ); } require_once 'Zend/Loader/Autoloader.php' ; $loader = Zend_Loader_Autoloader::getInstance(); //$loader->registerNamespace('App_'); //for model namespacing $loader ->setFallbackAutoloader(true); $loader ->suppressNotFoundWarnings(false); Zend_Loader::loadFile( 'Atmail/General.php' , null, true); Zend_Loader::loadFile( 'Atmail/Exception.php' , null, true); $siteBaseUrl = substr ( $_SERVER [ "SCRIPT_NAME" ],0, strpos ( $_SERVER [ "SCRIPT_NAME" ], 'index.php' )); Zend_Registry::set( 'siteBaseUrl' , $siteBaseUrl ); // Get database configuration $dbConfig = new Zend_Config_Ini( 'config/dbconfig.ini' , 'production' ); Zend_Registry::set( 'dbConfig' , $dbConfig ); $dbAdapter = Zend_Db::Factory( $dbConfig ->database); $dbAdapter ->query( "SET NAMES 'utf8'" ); Zend_Db_Table::setDefaultAdapter( $dbAdapter ); Zend_Registry::set( 'dbAdapter' , $dbAdapter ); //Get main configuration from database $config = new Atmail_Config_Mysql( $dbConfig , true); //$config->global['cacheEnabled'] = false; $config -> global [ 'allowLocalPop3' ] = true; //for testing/debugging $config -> global [ 'allowLocalImap' ] = true; //for testing/debugging Zend_Registry::set( 'config' , $config ); $locale = new Zend_Locale(); Zend_Registry::set( 'Zend_Locale' , $locale ); $log = new Atmail_Log(); $log ->addPriority( 'atmail' , 10); $log ->addPriority( 'sysadmin' , 20); $log ->addPriority( 'imap' , 30); $log ->addPriority( 'firebug' , 40); $logBasePath = APP_ROOT . 'log' . DIRECTORY_SEPARATOR; Zend_Registry::set( 'log' , $log ); unset( $config ); unset( $settings ); require_once ( '../../application/models/api.php' ); $_SERVER [ 'PHP_AUTH_USER' ] = $_SERVER [ 'argv' ][2]; $api = new api( array ( 'directApi' => 1) ); while (false !== $users = fgetcsv ( $fh , 10000, "," )) { foreach ( $users as $user ) { $user = trim( $user ); // Skip blank lines if ( $user == '' ) continue ; $res = array (); try { echo "Going to delete " . $user . ' ' ; $res = $api ->userDelete( $user ); } catch ( Exception $e ) { fwrite(STDOUT, "ERROR: " . $e ->getMessage() . "\n" ); } fwrite(STDOUT, (( array_key_exists ( 'status' , $res ) && $res [ 'status' ] == 'failed' ) ? 'FAILED' : 'OK' ) . "\n" ); } } fwrite(STDOUT, "DONE\n" ); |
Not:
die("Usage: php delete-users-csv.php [/path/to/users.csv] [admin-username]\n");
but:
die("Usage: php purge-users-csv.php [/path/to/users.csv] [admin-username]\n");