ChasTX

Registered
Aug 21, 2003
2
0
151
Austin, TX
Send email to all users

I realize that WHM has this function, but we'd like to build a local copy of all user emails to send them "pretty" HTML emails re: server upgrades, new offerings, etc.

How can we get the list, rather than just send the email?
 

randomuser

Well-Known Member
Jun 25, 2005
147
0
166
User email addresses are stored in /home/username/.contactemail, IF the user has set their email address.


for x in `ls /home` ; do strings /home/$x/.contactemail >> /some/path/to/outputfile ; done
 

carlaron

Well-Known Member
Jun 26, 2003
45
0
156
List ALL email users

If you want to send an email to ALL your email users... not just to the contact emails (half of which are out of date or not monitored by anyone with half a brain)... Here is a command-line PHP script to list all mailbox accounts. I used this when I needed to tell ALL of my email users about my planned upgrade from mbox to maildir, so they would know why their mailboxes where unavailable for as much as several hours (depending on the number of mailboxes you have on your server), and that NeoMail would no longer be available.

#!/usr/local/bin/php
<?php
$folderlist = `ls -d /home/*/mail/*/*`;
$list_array = explode("\n",$folderlist);
foreach($list_array as $folder){
if(is_dir($folder)){
$folder_array = explode("/",$folder);
print $folder_array[5] . "@" . $folder_array[4] ."\n";
}
}
?>
 

luxrok

Member
Sep 28, 2004
5
0
151
AWK instead of PHP

I tried the php script above and remembered my PHP is locked down, so I can't execute the system calls. So I wrote a little awk script to do the same thing. Please let me know if you see an improvement!

I used the same logic found in the php script. Thanks for the inspiration to do something cool!

Hans

--------------------------------------------------------

#!/bin/awk -f
#
# File: getAllEmail.awk
#
# This awk script takes the input of ls -d /home/*/mail/*/*
# checks to see if the directory exists, then outputs the email address. My example
# outputs them to a text file called emailaddress.txt
#
# I wrote it to get all the email addresses out of my cpanel box.
# You are free to use this program for your own purposes. If you
# improve it, please let me know. If it is horribly flawed, please let me know.
#
# Author: Hans C. Kaspersetz
# Date: 10/27/2007
# Email: hans [at] cyberxdesigns [dot] com
#
# Usage on cpaneli cli> ls -d /home/*/mail/*/*/ | getAllEmail.awk > emailaddress.txt

BEGIN {
}
{
tcmd = "test -d " $1
if(!system(tcmd)){
split($1,MyArray,"/")
print MyArray[6] "@" MyArray[5]
}
}