Revision: 33974
Updated Code
at January 16, 2012 04:19 by uptimejeff
Updated Code
#!/bin/bash # Group EMail Enabler v0.2 # Jeff Johnson <[email protected]> # Tested with OS X Server 10.6 and 10.7 # Should also work with 10.5 # This script allows you to manage email groups using Work Group Manager. # If you create an executive group in WGM, you then have a executive@ email address # This is automatically maintained as you adjust the members # The script searches your LDAP groups for the word 'mail' in the comment field # You must add mail to the comment field for any group which should have an email address. # The email address for that group will be the shortname of that group. # If you miss this step (add 'mail' to the comment field), this script does nothing. # Known issues # 1. Only supports groups in LDAP, users can be in LDAP or Local # 2. Does not support other groups within your email group (no nested groups) # 3. Almost no error checking, so best to run it manually a few times to check results. # Installation Instructions # 1. Save this file as # /usr/sbin/group_email.sh # 2. Then adjust permissions # sudo chmod +x /usr/sbin/group_email.sh # 3. Modifiy alias_maps in /etc/postfix/main.cf # You need to add this line to what you already have # hash:/etc/postfix/group_aliases # Example, you have: # alias_maps = hash:/etc/aliases # Change to: # alias_maps = hash:/etc/aliases, hash:/etc/postfix/group_aliases # 4. To run automatically every 5 minutes, I prefer a simple addition to /etc/crontab # you may need to create /etc/crontab if it doesn't exist # Add the following to /etc/crontab # */5 * * * * root /usr/sbin/group_email.sh >> /dev/null 2>&1 # # If you followed these instructions, within 5 minutes you will see an alias file at # /etc/postfix/groupaliases # you can inspect the file to confirm the results. cd /etc/postfix # clear current aliases echo "" > group_aliases.tmp # Get list of groups with 'mail' in the comment field gr=`dscl /LDAPv3/127.0.0.1 -list /Groups Comment | grep mail | awk '{print $1}'` for group in $gr do echo $group: `dscl /LDAPv3/127.0.0.1 -read /Groups/$group dsAttrTypeNative:memberUid | cut -d : -f 3 | grep -v "No such key"` >> group_aliases.tmp done cmp -s group_aliases.tmp group_aliases > /dev/null if [ $? -eq 1 ]; then echo different cp group_aliases.tmp group_aliases /usr/sbin/postalias /etc/postfix/group_aliases /usr/bin/newaliases else echo same fi exit
Revision: 33973
Updated Code
at January 16, 2012 04:16 by uptimejeff
Updated Code
#!/bin/bash # Group EMail Enabler v0.2 # Jeff Johnson <[email protected]> # OS X Server should allow you to create a Group in Work Group Manager # and allow you to email that group. This functionality is missing or broken # in most versions of OS X Server # This script allows you to manage email groups using Work Group Manager. # If you create a 'manager' group in WGM, you then have a manager@ email address # automatically maintained as you adjust the members # To achieve this, the script searches your LDAP groups for the word 'mail' in the comment field # You must add mail to the comment field for any group which should have an email address. # The email address for that group will be the shortname of that group. # If you miss this step (add 'mail' to the comment field), this script does nothing. # If you use these installation instructions, the script will run every 5 minutes. # Known issues # 1. Only supports groups in LDAP, users can be in LDAP or Local # 2. Does not support other groups within your email group (no nested groups) # 3. Almost no error checking, so best to run it manually a few times to check results. # Installation Instructions # 1. Save this file as # /usr/sbin/group_email.sh # 2. Then adjust permissions # sudo chmod +x /usr/sbin/group_email.sh # 3. Modifiy alias_maps in /etc/postfix/main.cf # You need to add this line to what you already have # hash:/etc/postfix/group_aliases # Example, you have: # alias_maps = hash:/etc/aliases # Change to: # alias_maps = hash:/etc/aliases, hash:/etc/postfix/group_aliases # 4. To run automatically every 5 minutes, I prefer a simple addition to /etc/crontab # you may need to create /etc/crontab if it doesn't exist # Add the following to /etc/crontab # */5 * * * * root /usr/sbin/group_email.sh >> /dev/null 2>&1 # # If you followed these instructions, within 5 minutes you will see an alias file at # /etc/postfix/groupaliases # you can inspect the file to confirm the results. cd /etc/postfix # clear current aliases echo "" > group_aliases.tmp # Get list of groups with 'mail' in the comment field gr=`dscl /LDAPv3/127.0.0.1 -list /Groups Comment | grep mail | awk '{print $1}'` for group in $gr do echo $group: `dscl /LDAPv3/127.0.0.1 -read /Groups/$group dsAttrTypeNative:memberUid | cut -d : -f 3 | grep -v "No such key"` >> group_aliases.tmp done cmp -s group_aliases.tmp group_aliases > /dev/null if [ $? -eq 1 ]; then echo different cp group_aliases.tmp group_aliases /usr/sbin/postalias /etc/postfix/group_aliases /usr/bin/newaliases else echo same fi exit
Revision: 33972
Updated Code
at October 21, 2010 11:46 by uptimejeff
Updated Code
#!/bin/bash # Group Email Enabler is a simple script which fixes a shortcoming in OS X Server 10.6 # by allowing each WGM group to automatically become an email list for it's members. # # Jeff Johnson [email protected] # # To install # 1. save this file as # /usr/sbin/group_email.sh # 2. sudo chmod +x /usr/sbin/group_email.sh # 3. touch /private/var/log/group_email.log # 4. adjust /etc/postfix/main.cf, add the following to "alias_maps=" # hash:/etc/postfix/group_aliases # 5. add the following to /etc/crontab (you may need to create /etc/crontab) # */15 * * * * root /usr/sbin/group_email.sh >> /private/var/log/group_email.log # To use # When the script runs, it searches for any WGM group in /LDAPv3/127.0.0.1 the word "mail" # within the comment field. Postfix aliases with group members are then created. # # If you create a group called 'employees' and put all staff in that group, you will # then have an email setup of [email protected] # # Be sure all mail groups contain at least one member # Would like to add/modify # 1. needs error trapping. a group without members returns an error. # 2. support for non-local LDAP # clear current aliases echo "" > /etc/postfix/group_aliases # Get list of groups with 'mail' in the comment field gr=dscl /LDAPv3/127.0.0.1 -list /Groups Comment | grep mail | awk '{print $1}' for group in $gr do echo $group: `dscl /LDAPv3/127.0.0.1 -read /Groups/$group dsAttrTypeNative:memberUid | cut -d : -f 3 | grep -v "No such key"` >> /etc/postfix/group_aliases done /usr/sbin/postalias /etc/postfix/group_aliases /usr/bin/newaliases exit 0
Revision: 33971
Updated Code
at October 16, 2010 01:57 by uptimejeff
Updated Code
#!/bin/bash # Group Email Enabler is a simple script which fixes a shortcoming in OS X Server 10.6 # by allowing each WGM group to automatically become an email list for it's members. # # Jeff Johnson [email protected] # # To install # 1. save this file as # /usr/sbin/group_email.sh # 2. sudo chmod +x /usr/sbin/group_email.sh # 3. touch /private/var/log/group_email.log # 4. adjust /etc/postfix/main.cf, add the following to "alias_maps=" # hash:/etc/postfix/group_aliases # 5. add the following to /etc/crontab (you may need to create /etc/crontab) # */15 * * * * root /usr/sbin/group_email.sh >> /private/var/log/group_email.log # To use # When the script runs, it searches for any WGM group in /LDAPv3/127.0.0.1 with it's # comment set to exactly 'mail'. It then creates postfix aliases with the group short name # and includes the group's members. # If you create a group called 'employees' and put all staff in that group, you will # then have an email setup of [email protected] # # Be sure all mail groups contain at least one member # Would like to add/modify # 1. lookup groups that 'contain' the word mail in comments instead of comments equals mail. # 2. needs error trapping. a group without members returns an error. # 3. support for non-local LDAP # clear current aliases echo "" > /etc/postfix/group_aliases # Get list of groups with 'mail' in the comment field gr=`dscl /LDAPv3/127.0.0.1 -search /Groups Comment mail | grep Comment | cut -f1` for group in $gr do echo $group: `dscl /LDAPv3/127.0.0.1 -read /Groups/$group dsAttrTypeNative:memberUid | cut -d : -f 3 | grep -v "No such key"` >> /etc/postfix/group_aliases done /usr/sbin/postalias /etc/postfix/group_aliases /usr/bin/newaliases exit 0
Revision: 33970
Updated Code
at October 15, 2010 08:17 by uptimejeff
Updated Code
#!/bin/bash # Group Email Enabler is a simple script which fixes a shortcoming in OS X Server 10.6 # by allowing each WGM group to automatically become an email list for it's members. # # Jeff Johnson [email protected] # # To install # 1. save this file as # /usr/sbin/group_email.sh # 2. sudo chmod +x /usr/sbin/group_email.sh # 3. touch /private/var/log/group_email.log # 4. adjust /etc/postfix/main.cf, add the following to alias_maps # hash:/etc/postfix/group_aliases # 5. add the following to /etc/crontab # */15 * * * * root /usr/sbin/group_email.sh >> /private/var/log/group_email.log # To use # Any WGM group in /LDAPv3/127.0.0.1 with it's comment set to exactly 'mail' # will have a mail alias setup within 15 minutes on execution of this script. # If you follow the install instructions, the group emails will be updated every 15 minutes # Be sure all mail groups contain at least one member # Would like to add/modify # 1. lookup groups that 'contain' the word mail in comments instead of comments equals mail. # 2. needs error trapping. a group without members returns an error. # 3. support for non-local LDAP # clear current aliases echo "" > /etc/postfix/group_aliases # Get list of groups with 'mail' in the comment field gr=`dscl /LDAPv3/127.0.0.1 -search /Groups Comment mail | grep Comment | cut -f1` for group in $gr do echo $group: `dscl /LDAPv3/127.0.0.1 -read /Groups/$group dsAttrTypeNative:memberUid | cut -d : -f 3 | grep -v "No such key"` >> /etc/postfix/group_aliases done /usr/sbin/postalias /etc/postfix/group_aliases /usr/bin/newaliases exit 0
Revision: 33969
Updated Code
at October 15, 2010 08:13 by uptimejeff
Updated Code
#!/bin/bash # To install # 1. save this file as # /usr/sbin/group_email.sh # 2. sudo chmod +x /usr/sbin/group_email.sh # 3. touch /private/var/log/group_email.log # 4. adjust /etc/postfix/main.cf, add the following to alias_maps # hash:/etc/postfix/group_aliases # 5. add the following to /etc/crontab # */15 * * * * root /usr/sbin/group_email.sh >> /private/var/log/group_email.log # To use # Any group with 'mail' as the comment will have a mail alias setup within 15 minutes # Be sure all mail groups contain at least one member # Would like to add/modify # 1. lookup groups that 'contain' the word mail in comments instead of comments equals mail. # 2. needs error trapping. a group without members returns an error. # 3. support for non-local LDAP # clear current aliases echo "" > /etc/postfix/group_aliases # Get list of groups with 'mail' in the comment field gr=`dscl /LDAPv3/127.0.0.1 -search /Groups Comment mail | grep Comment | cut -f1` for group in $gr do echo $group: `dscl /LDAPv3/127.0.0.1 -read /Groups/$group dsAttrTypeNative:memberUid | cut -d : -f 3 | grep -v "No such key"` >> /etc/postfix/group_aliases done /usr/sbin/postalias /etc/postfix/group_aliases /usr/bin/newaliases exit 0
Revision: 33968
Updated Code
at October 15, 2010 07:50 by uptimejeff
Updated Code
#!/bin/bash # To install # 1. save this file as # /usr/sbin/group_email.sh # 2. sudo chmod +x /usr/sbin/group_email.sh # 3. touch /private/var/log/group_email.log # 4. adjust /etc/postfix/main.cf, add the following to alias_maps # hash:/etc/postfix/group_aliases # 5. add the following to /etc/crontab # */15 * * * * root /usr/sbin/group_email.sh >> /private/var/log/group_email.log # clear current aliases echo "" > /etc/postfix/group_aliases # Get list of groups with 'mail' in the comment field gr=`dscl /LDAPv3/127.0.0.1 -search /Groups Comment mail | grep Comment | cut -f1` for group in $gr do echo $group: `dscl /LDAPv3/127.0.0.1 -read /Groups/$group dsAttrTypeNative:memberUid | cut -d : -f 3 | grep -v "No such key"` >> /etc/postfix/group_aliases done /usr/sbin/postalias /etc/postfix/group_aliases /usr/bin/newaliases exit 0
Revision: 33967
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at October 15, 2010 07:48 by uptimejeff
Initial Code
#!/bin/bash # clear current aliases echo "" > /etc/postfix/group_aliases # Get list of groups with 'mail' in the comment field gr=`dscl /LDAPv3/127.0.0.1 -search /Groups Comment mail | grep Comment | cut -f1` for group in $gr do echo $group: `dscl /LDAPv3/127.0.0.1 -read /Groups/$group dsAttrTypeNative:memberUid | cut -d : -f 3 | grep -v "No such key"` >> /etc/postfix/group_aliases done /usr/sbin/postalias /etc/postfix/group_aliases /usr/bin/newaliases exit 0
Initial URL
Initial Description
If you have any contributions, please comment here.
Initial Title
OSX Server - Group EMail Enabler v0.2
Initial Tags
mail, server, osx
Initial Language
Bash