Browse Source

Added `addmailalias` command

theo 1 year ago
parent
commit
bdbab89267
2 changed files with 50 additions and 0 deletions
  1. 40 0
      addmailalias
  2. 10 0
      funcs

+ 40 - 0
addmailalias

@@ -0,0 +1,40 @@
+#!/bin/bash
+. .env
+. funcs
+
+uid=$1
+alias=$2
+
+if user_exists $uid; then
+    true
+else
+    echo "User $uid does not exist." 
+    exit 1
+fi
+
+if mail_exists $alias; then
+    echo "Mail address $alias is already taken" 
+    exit 1
+fi
+
+#ldapmodify to add the PostfixBookMailAccount objectClass
+objectClass="dn: uid=$uid,ou=People,dc=lan,dc=btz,dc=alsace
+changeType: modify
+add: objectClass
+objectClass: PostfixBookMailAccount"
+
+if user_is_postfix $uid; then
+	true
+else
+    echo "User $uid doesn't have the PostfixBookMailAccount objectClass, adding it..." 
+    echo "$objectClass" | ldapmodify $LDAPOPTS
+fi
+
+
+#ldapmodify to add the mailAlias attribute
+mailAlias="dn: uid=$uid,ou=People,dc=lan,dc=btz,dc=alsace
+changeType: modify
+add: mailAlias
+mailAlias: $alias"
+
+echo "$mailAlias" | ldapmodify $LDAPOPTS

+ 10 - 0
funcs

@@ -12,11 +12,21 @@ group_exists() {
 	[ -n "$res" ]
 }
 
+mail_exists() {
+	res=$(ldapsearch -x -LLL -b $PEOPLEDN -D $BINDDN -w $BINDPW "(|(mail=$1)(mailAlias=$1))")
+	[ -n "$res" ]
+}
+
 user_is_posix() {
 	res=$(ldapsearch -x -LLL -b $PEOPLEDN -D $BINDDN -w $BINDPW "(&(uid=$1)(objectClass=posixAccount))" | grep uid: | cut -f2 -d' ')
 	[ -n "$res" ]
 }
 
+user_is_postfix() {
+	res=$(ldapsearch -x -LLL -b $PEOPLEDN -D $BINDDN -w $BINDPW "(&(uid=$1)(objectClass=PostfixBookMailAccount))" | grep uid: | cut -f2 -d' ')
+	[ -n "$res" ]
+}
+
 group_is_posix() {
 	res=$(ldapsearch -x -LLL -b $GROUPSDN -D $BINDDN -w $BINDPW "(&(cn=$1)(objectClass=posixGroup))" | grep cn: | cut -f2 -d' ')
 	[ -n "$res" ]