<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://cocnm.computerisms.ca/index.php?action=history&amp;feed=atom&amp;title=%2Froot%2Fscripts%2Fmailutils.sh</id>
	<title>/root/scripts/mailutils.sh - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://cocnm.computerisms.ca/index.php?action=history&amp;feed=atom&amp;title=%2Froot%2Fscripts%2Fmailutils.sh"/>
	<link rel="alternate" type="text/html" href="http://cocnm.computerisms.ca/index.php?title=/root/scripts/mailutils.sh&amp;action=history"/>
	<updated>2026-11-14T11:54:54Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>http://cocnm.computerisms.ca/index.php?title=/root/scripts/mailutils.sh&amp;diff=382&amp;oldid=prev</id>
		<title>Bob at 17:33, 14 March 2014</title>
		<link rel="alternate" type="text/html" href="http://cocnm.computerisms.ca/index.php?title=/root/scripts/mailutils.sh&amp;diff=382&amp;oldid=prev"/>
		<updated>2014-03-14T17:33:40Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
## 2013.01.07 - Computerisms.ca&lt;br /&gt;
## Script written by Bob Miller&lt;br /&gt;
## Use it, share it, don&amp;#039;t claim it.&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Welcome.  I am the Computerisms mail utility helper.  I can help you with the following tasks:&amp;quot;&lt;br /&gt;
echo &amp;quot;&amp;quot;&lt;br /&gt;
echo &amp;quot;	[1]	Manage Aliases (make an existing address answer for more than one address)&amp;quot;&lt;br /&gt;
echo &amp;quot;	[2]	Manage Forwarding (make mail that arrives to an address get resent to another address)&amp;quot;&lt;br /&gt;
echo &amp;quot;&amp;quot;&lt;br /&gt;
read -p &amp;quot;Please enter the [number] of the taks you wish me to perform:  &amp;quot; TASK&lt;br /&gt;
&lt;br /&gt;
echo $TASK&lt;br /&gt;
&lt;br /&gt;
case $TASK in &lt;br /&gt;
		1)&lt;br /&gt;
			echo &amp;quot;Okay, we are managing mail Aliases.&amp;quot;  &lt;br /&gt;
			echo &amp;quot;&amp;quot;&lt;br /&gt;
			read -p &amp;quot;This section requires Network Administrator Credentials.  Please enter a username with sufficient privileges:  &amp;quot; UNM&lt;br /&gt;
			echo &amp;quot;&amp;quot;&lt;br /&gt;
			read -sp &amp;quot;Thank you.  Please enter the password that goes with this account (what you type will not display):  &amp;quot; PASS &amp;amp;&amp;amp; echo&lt;br /&gt;
			echo &amp;quot;&amp;quot;&lt;br /&gt;
			echo &amp;quot;Thank you.  Please pick your task:&amp;quot;&lt;br /&gt;
			echo &amp;quot;&amp;quot;&lt;br /&gt;
			echo &amp;quot; (1)	Show all addresses with one or more aliases, and list the aliases (will output to less)&amp;quot;&lt;br /&gt;
			echo &amp;quot; (2)	List any aliases a specific address has&amp;quot;&lt;br /&gt;
			echo &amp;quot; (3)	Add or Remove an alias to an address&amp;quot;&lt;br /&gt;
			echo &amp;quot;&amp;quot;&lt;br /&gt;
			read -p &amp;quot;Enter the number corresponding to the task you wish me to perform:  &amp;quot; ALSTSK&lt;br /&gt;
&lt;br /&gt;
			case $ALSTSK in&lt;br /&gt;
					1)&lt;br /&gt;
						ldbsearch -H ldap://localhost -b &amp;quot;CN=Users,DC=computerisms,DC=com&amp;quot; -U $UNM\@computerisms.com\%$PASS mailAlternateAddress=\* &amp;gt; /tmp/aliasdata.txt&lt;br /&gt;
						ALNUM=$(cat /tmp/aliasdata.txt | tail -2 | head -1 | cut -f 2 -d &amp;quot; &amp;quot;)&lt;br /&gt;
						echo &amp;quot;There are $ALNUM addresses with Aliases&amp;quot;&lt;br /&gt;
						while [[ $(grep sAMAccountName /tmp/aliasdata.txt) != &amp;quot;&amp;quot; ]]; do&lt;br /&gt;
							sed -n &amp;#039;1,/^$/ p&amp;#039; /tmp/aliasdata.txt | grep -e sAMAccountName -e mailAlternateAddress &amp;gt;&amp;gt; /tmp/aliaslist.txt&lt;br /&gt;
							echo &amp;quot;&amp;quot; &amp;gt;&amp;gt; /tmp/aliaslist.txt&lt;br /&gt;
							sed -i &amp;#039;1,/^$/ d&amp;#039; /tmp/aliasdata.txt&lt;br /&gt;
						done&lt;br /&gt;
						sed &amp;#039;s/sAMAccountName/Account Name/&amp;#039; /tmp/aliaslist.txt | sed &amp;#039;s/mailAlternateAddress/Has Alias/&amp;#039; | less&lt;br /&gt;
						;;&lt;br /&gt;
&lt;br /&gt;
					2)&lt;br /&gt;
						read -p &amp;quot;Sure, please enter which account you want me to look up (do not include the @computerisms.com part):  &amp;quot; ACCTNM&lt;br /&gt;
						echo &amp;quot;&amp;quot;&lt;br /&gt;
						echo &amp;quot;Account $ACCTNM has the following Aliases:&amp;quot;&lt;br /&gt;
						ldbsearch -H ldap://localhost -b &amp;quot;CN=Users,DC=computerisms,DC=com&amp;quot; -U $UNM\@computerisms.com\%$PASS sAMAccountName=$ACCTNM | grep  mailAlternateAddress | sed &amp;#039;s/mailAlternateAddress: //&amp;#039;&lt;br /&gt;
						;;&lt;br /&gt;
&lt;br /&gt;
					3)&lt;br /&gt;
						read -p &amp;quot;Sure, please enter which account you want me to Modify (do not include the @computerisms.com part):  &amp;quot; ACCTNM&lt;br /&gt;
						echo &amp;quot;&amp;quot;&lt;br /&gt;
						ldbsearch -H ldap://localhost -b &amp;quot;CN=Users,DC=computerisms,DC=com&amp;quot; -U $UNM\@computerisms.com\%$PASS sAMAccountName=$ACCTNM | grep  mailAlternateAddress | sed &amp;#039;s/mailAlternateAddress: //&amp;#039; &amp;gt; /tmp/alias.$ACCTNM&lt;br /&gt;
						ANUM=$(cat /tmp/alias.$ACCTNM | wc -l) &lt;br /&gt;
						FN=$(echo $ACCTNM | cut -f 1 -d .)&lt;br /&gt;
						LN=$(echo $ACCTNM | cut -f 2 -d .)&lt;br /&gt;
						echo &amp;quot;dn: CN=$FN $LN,CN=Users,DC=computerisms,DC=com&amp;quot; &amp;gt;&amp;gt; /tmp/aliases.ldif&lt;br /&gt;
						echo &amp;quot;changetype: modify&amp;quot; &amp;gt;&amp;gt; /tmp/aliases.ldif&lt;br /&gt;
 &lt;br /&gt;
						if [ -s /tmp/alias.$ACCTNM ]; then&lt;br /&gt;
							echo &amp;quot;Account $ACCTNM has $ANUM aliases already.  Let&amp;#039;s go through them and you can tell me if anything needs changing&amp;quot;&lt;br /&gt;
							echo &amp;quot;&amp;quot;&lt;br /&gt;
							for ALS in $(cat /tmp/alias.$ACCTNM); do&lt;br /&gt;
								read -p &amp;quot;$ALS is an alias for $ACCTNM@computerisms.com.  Do you want to [k]eep or [r]emove this alias?  &amp;quot; KR&lt;br /&gt;
								if [[ $KR = r ]]; then&lt;br /&gt;
									if [[ $(grep delete /tmp/aliases.ldif) == &amp;quot;&amp;quot; ]]; then &lt;br /&gt;
										echo &amp;quot;delete: mailAlternateAddress&amp;quot; &amp;gt;&amp;gt; /tmp/aliases.ldif&lt;br /&gt;
									fi&lt;br /&gt;
									echo &amp;quot;mailAlternateAddress: $ALS&amp;quot; &amp;gt;&amp;gt; /tmp/aliases.ldif&lt;br /&gt;
								fi&lt;br /&gt;
							done&lt;br /&gt;
						fi&lt;br /&gt;
						echo &amp;quot;&amp;quot;&lt;br /&gt;
						ADDAL=y&lt;br /&gt;
						while [[ $ADDAL = y ]]; do&lt;br /&gt;
							read -n 1 -p &amp;quot;would you like to add an alias to $ACCTNM@computerisms.com? [y]es or [any key] for no&amp;quot; ADDAL&lt;br /&gt;
							echo &amp;quot;&amp;quot;&lt;br /&gt;
							if [[ $ADDAL == y ]]; then&lt;br /&gt;
								if [[ $(grep ^add /tmp/aliases.ldif) == &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
									echo &amp;quot;-&amp;quot; &amp;gt;&amp;gt; /tmp/aliases.ldif&lt;br /&gt;
									echo &amp;quot;add: mailAlternateAddress&amp;quot; &amp;gt;&amp;gt; /tmp/aliases.ldif&lt;br /&gt;
								fi&lt;br /&gt;
								read -p &amp;quot;Please enter the alias (include the @computerisms.com part):  &amp;quot; ADDALNM&lt;br /&gt;
								echo &amp;quot;mailAlternateAddress: $ADDALNM&amp;quot; &amp;gt;&amp;gt; /tmp/aliases.ldif&lt;br /&gt;
							fi&lt;br /&gt;
						done&lt;br /&gt;
						ldbmodify -H ldap://localhost -U $UNM\@computerisms.com\%$PASS /tmp/aliases.ldif&lt;br /&gt;
						echo &amp;quot;&amp;quot;&lt;br /&gt;
						echo &amp;quot;Alias records have been modified.  Have a nice day!&amp;quot;&lt;br /&gt;
						;;&lt;br /&gt;
			&lt;br /&gt;
					*)&lt;br /&gt;
						echo &amp;quot;Ohh!.  I am sorry to have send you back, but that was an invalid choice&amp;quot;&lt;br /&gt;
						;;&lt;br /&gt;
&lt;br /&gt;
			esac&lt;br /&gt;
			rm /tmp/alias*&lt;br /&gt;
			;;&lt;br /&gt;
&lt;br /&gt;
		2)&lt;br /&gt;
			echo &amp;quot;Okay, we are manageing mail Forwards.  You need to know that dotQmail are easy to use.&amp;quot;&lt;br /&gt;
			echo &amp;quot;You should really learn to modify them manually.  Please choose your task:&amp;quot;&lt;br /&gt;
			echo &amp;quot;&amp;quot;&lt;br /&gt;
			echo &amp;quot; (1)	List all accounts that forward their mail, and show all the forwards for each account (will output to less)&amp;quot;&lt;br /&gt;
			echo &amp;quot; (2)	List all forwards for a specific account&amp;quot;&lt;br /&gt;
			echo &amp;quot; (3)	Modify the forwards for a specific account&amp;quot;&lt;br /&gt;
			echo &amp;quot;&amp;quot;&lt;br /&gt;
			read -p &amp;quot;Enter the number corresponding to the task you wish me to perform:  &amp;quot; FWDTSK&lt;br /&gt;
			&lt;br /&gt;
			case $FWDTSK in&lt;br /&gt;
					1)&lt;br /&gt;
						echo &amp;quot;These are all the accounts that have forwards, and the list of where the mail is forwarded too:&amp;quot;&lt;br /&gt;
						for i in $(ls /home/mail/*/.qmail | cut -f 1,2,3,4 -d /); do &lt;br /&gt;
							if [[ -e $i/Maildir ]]; then &lt;br /&gt;
								HOME=$(echo $i | cut -f 4 -d /)&lt;br /&gt;
								if [[ $(grep ^\&amp;amp; /home/mail/$HOME/.qmail) != &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
									echo &amp;quot;$HOME@computerisms.com forwards too:&amp;quot; &amp;gt;&amp;gt; /tmp/fwd.txt&lt;br /&gt;
									grep ^\&amp;amp; /home/mail/$HOME/.qmail | cut -f 2 -d \&amp;amp; &amp;gt;&amp;gt; /tmp/fwd.txt&lt;br /&gt;
									echo &amp;quot;&amp;quot; &amp;gt;&amp;gt; /tmp/fwd.txt&lt;br /&gt;
								fi&lt;br /&gt;
							fi &lt;br /&gt;
						done&lt;br /&gt;
						less /tmp/fwd.txt&lt;br /&gt;
						echo &amp;quot;&amp;quot;&lt;br /&gt;
						echo &amp;quot;These are all the accounts that are forwarding their mail right now&amp;quot;&lt;br /&gt;
						echo &amp;quot;Have a Wonderful Day!&amp;quot;&lt;br /&gt;
						echo &amp;quot;&amp;quot;&lt;br /&gt;
						;;&lt;br /&gt;
&lt;br /&gt;
					2)&lt;br /&gt;
						read -p &amp;quot;Sure, please enter which account you want me to look up (do not include the @computerisms.com part):  &amp;quot; ACCTNM&lt;br /&gt;
						echo &amp;quot;&amp;quot;&lt;br /&gt;
						if [ -e /home/mail/$ACCTNM/.qmail ]; then&lt;br /&gt;
							if [[ $(grep ^\&amp;amp; /home/mail/$ACCTNM/.qmail) != &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
								echo &amp;quot;Account $ACCTNM has the following Forwards:&amp;quot;&lt;br /&gt;
								grep ^\&amp;amp; /home/mail/$ACCTNM/.qmail&lt;br /&gt;
								echo &amp;quot;&amp;quot;&lt;br /&gt;
							fi&lt;br /&gt;
						else&lt;br /&gt;
							echo &amp;quot;Account $ACCTNM has no forwards&amp;quot;&lt;br /&gt;
							echo &amp;quot;&amp;quot;&lt;br /&gt;
						fi&lt;br /&gt;
						echo &amp;quot;&amp;quot;&lt;br /&gt;
						echo &amp;quot;That is all the forwards I can find right now for $ACCTNM&amp;quot;&lt;br /&gt;
						echo &amp;quot;Have a Wonderful Day!&amp;quot;&lt;br /&gt;
						echo &amp;quot;&amp;quot;&lt;br /&gt;
						;;&lt;br /&gt;
&lt;br /&gt;
					3)&lt;br /&gt;
						read -p &amp;quot;Sure, please enter which account you want me to Modify (do not include the @computerisms.com part):  &amp;quot; ACCTNM&lt;br /&gt;
						echo &amp;quot;&amp;quot;&lt;br /&gt;
						if [ -e /home/mail/$ACCTNM/.qmail ]; then&lt;br /&gt;
							if [[ $(grep ^\&amp;amp; /home/mail/$ACCTNM/.qmail) != &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
								grep ^\&amp;amp; /home/mail/$ACCTNM/.qmail &amp;gt;&amp;gt; /tmp/fwd.txt&lt;br /&gt;
								FWDNUM=$(wc -l /tmp/fwd.txt)&lt;br /&gt;
								echo &amp;quot;Account $ACCTNM has $FWDNUM Forward(s).  Let&amp;#039;s go through them and you can tell me what needs to change:&amp;quot;&lt;br /&gt;
								echo &amp;quot;Please note the leading ampersand (&amp;amp;) is supposed to be there&amp;quot;&lt;br /&gt;
								echo &amp;quot;&amp;quot;&lt;br /&gt;
								for FWD in $(cat /tmp/fwd.txt); do&lt;br /&gt;
									read -n 1 -p &amp;quot;$ACCTNM@computerisms.com forwards to $FWD.  Do you want to [k]eep or [r]emove  this forward?  &amp;quot; KR&lt;br /&gt;
									echo &amp;quot;&amp;quot;&lt;br /&gt;
									if [ $KR == k ]; then&lt;br /&gt;
										echo $FWD &amp;gt;&amp;gt; /tmp/fwd.txt.2&lt;br /&gt;
									fi&lt;br /&gt;
								done&lt;br /&gt;
							fi&lt;br /&gt;
						fi&lt;br /&gt;
						ADDFWD=y&lt;br /&gt;
						while [[ $ADDFWD == y ]]; do&lt;br /&gt;
							read -n 1 -p &amp;quot;would you like to add a forward to $ACCTNM@computerisms.com?  [y]es or [any key] for no&amp;quot; ADDFWD&lt;br /&gt;
							echo &amp;quot;&amp;quot;&lt;br /&gt;
							if [[ $ADDFWD == y ]]; then&lt;br /&gt;
								read -p &amp;quot;Okay, please enter the address to forward mail for $ACCTNM to:  &amp;quot;  FWDADDR&lt;br /&gt;
								echo &amp;quot;&amp;amp;$FWDADDR&amp;quot; &amp;gt;&amp;gt; /tmp/fwd.txt.2&lt;br /&gt;
							fi&lt;br /&gt;
						done&lt;br /&gt;
						read -n 1 -p &amp;quot;Should I keep a local copy of the mail I forward for $ACCTNM?  [y]es or [any key] for no&amp;quot; LOC&lt;br /&gt;
						echo &amp;quot;&amp;quot;&lt;br /&gt;
						if [[ $LOC == y ]]; then&lt;br /&gt;
							echo &amp;quot;/home/mail/$ACCTNM/Maildir/&amp;quot; &amp;gt;&amp;gt; /tmp/fwd.txt.2&lt;br /&gt;
						fi&lt;br /&gt;
						if [ -e /tmp/fwd.txt.2 ]; then&lt;br /&gt;
							chmod +t /home/mail/$ACCTNM&lt;br /&gt;
							cat /tmp/fwd.txt.2 &amp;gt; /home/mail/$ACCTNM/.qmail&lt;br /&gt;
							chmod -t /home/mail/$ACCTNM&lt;br /&gt;
						else&lt;br /&gt;
							rm /home/mail/$ACCTNM/.qmail&lt;br /&gt;
						fi&lt;br /&gt;
						echo &amp;quot;&amp;quot;&lt;br /&gt;
						echo &amp;quot;Forwards updated for $ACCTNM&amp;quot;&lt;br /&gt;
						echo &amp;quot;Have a Wonderful Day!&amp;quot;&lt;br /&gt;
						echo &amp;quot;&amp;quot;&lt;br /&gt;
						;;&lt;br /&gt;
	&lt;br /&gt;
			esac&lt;br /&gt;
			rm /tmp/fwd.txt*&lt;br /&gt;
			;;&lt;br /&gt;
&lt;br /&gt;
		*)&lt;br /&gt;
			echo &amp;quot;Invalid Entry, Sorry, Please Start Over&amp;quot;&lt;br /&gt;
			&lt;br /&gt;
			;;&lt;br /&gt;
esac&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bob</name></author>
	</entry>
</feed>