Browse Source

Command for adding an email rule

Bob Mottram 10 years ago
parent
commit
e780194fb1
5 changed files with 104 additions and 55 deletions
  1. 4
    0
      Makefile
  2. 1
    0
      debian/source/include-binaries
  3. BIN
      man/freedombone-addemail.1.gz
  4. 1
    55
      src/freedombone
  5. 98
    0
      src/freedombone-addemail

+ 4
- 0
Makefile View File

@@ -18,6 +18,7 @@ install:
18 18
 	install -m 755 src/${APP}-sec ${DESTDIR}${PREFIX}/bin
19 19
 	install -m 755 src/${APP}-addcert ${DESTDIR}${PREFIX}/bin
20 20
 	install -m 755 src/${APP}-addlist ${DESTDIR}${PREFIX}/bin
21
+	install -m 755 src/${APP}-addemail ${DESTDIR}${PREFIX}/bin
21 22
 	mkdir -m 755 -p ${DESTDIR}${PREFIX}/share/man/man1
22 23
 	install -m 644 man/${APP}.1.gz ${DESTDIR}${PREFIX}/share/man/man1
23 24
 	install -m 644 man/${APP}-prep.1.gz ${DESTDIR}${PREFIX}/share/man/man1
@@ -27,6 +28,7 @@ install:
27 28
 	install -m 644 man/${APP}-sec.1.gz ${DESTDIR}${PREFIX}/share/man/man1
28 29
 	install -m 644 man/${APP}-addcert.1.gz ${DESTDIR}${PREFIX}/share/man/man1
29 30
 	install -m 644 man/${APP}-addlist.1.gz ${DESTDIR}${PREFIX}/share/man/man1
31
+	install -m 644 man/${APP}-addemail.1.gz ${DESTDIR}${PREFIX}/share/man/man1
30 32
 uninstall:
31 33
 	rm -f ${PREFIX}/share/man/man1/${APP}.1.gz
32 34
 	rm -f ${PREFIX}/share/man/man1/${APP}-prep.1.gz
@@ -36,6 +38,7 @@ uninstall:
36 38
 	rm -f ${PREFIX}/share/man/man1/${APP}-sec.1.gz
37 39
 	rm -f ${PREFIX}/share/man/man1/${APP}-addcert.1.gz
38 40
 	rm -f ${PREFIX}/share/man/man1/${APP}-addlist.1.gz
41
+	rm -f ${PREFIX}/share/man/man1/${APP}-addemail.1.gz
39 42
 	rm -rf ${PREFIX}/share/${APP}
40 43
 	rm -f ${PREFIX}/bin/${APP}
41 44
 	rm -f ${PREFIX}/bin/${APP}-prep
@@ -45,6 +48,7 @@ uninstall:
45 48
 	rm -f ${PREFIX}/bin/${APP}-sec
46 49
 	rm -f ${PREFIX}/bin/${APP}-addcert
47 50
 	rm -f ${PREFIX}/bin/${APP}-addlist
51
+	rm -f ${PREFIX}/bin/${APP}-addemail
48 52
 clean:
49 53
 	rm -f \#* \.#* debian/*.substvars debian/*.log
50 54
 	rm -fr deb.* debian/${APP}

+ 1
- 0
debian/source/include-binaries View File

@@ -6,3 +6,4 @@ man/freedombone-config.1.gz
6 6
 man/freedombone-sec.1.gz
7 7
 man/freedombone-addcert.1.gz
8 8
 man/freedombone-addlist.1.gz
9
+man/freedombone-addemail.1.gz

BIN
man/freedombone-addemail.1.gz View File


+ 1
- 55
src/freedombone View File

@@ -5905,59 +5905,6 @@ function email_from_address {
5905 5905
   echo 'email_from_address' >> $COMPLETION_FILE
5906 5906
 }
5907 5907
 
5908
-function folders_for_email_addresses {
5909
-  if [[ $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" ]]; then
5910
-      return
5911
-  fi
5912
-  if grep -Fxq "folders_for_email_addresses" $COMPLETION_FILE; then
5913
-      return
5914
-  fi
5915
-  echo '#!/bin/bash' > /usr/bin/addemailtofolder
5916
-  echo 'MYUSERNAME=$1' >> /usr/bin/addemailtofolder
5917
-  echo 'EMAILADDRESS=$2' >> /usr/bin/addemailtofolder
5918
-  echo 'MAILINGLIST=$3' >> /usr/bin/addemailtofolder
5919
-  echo 'MUTTRC=/home/$MYUSERNAME/.muttrc' >> /usr/bin/addemailtofolder
5920
-  echo 'PM=/home/$MYUSERNAME/.procmailrc' >> /usr/bin/addemailtofolder
5921
-  echo 'LISTDIR=/home/$MYUSERNAME/Maildir/$MAILINGLIST' >> /usr/bin/addemailtofolder
5922
-  echo '' >> /usr/bin/addemailtofolder
5923
-  echo 'if ! [[ $MYUSERNAME && $EMAILADDRESS && $MAILINGLIST ]]; then' >> /usr/bin/addemailtofolder
5924
-  echo '  echo "addemailtofolder [user name] [email address] [mailing list name]"' >> /usr/bin/addemailtofolder
5925
-  echo '  exit 1' >> /usr/bin/addemailtofolder
5926
-  echo 'fi' >> /usr/bin/addemailtofolder
5927
-  echo '' >> /usr/bin/addemailtofolder
5928
-  echo 'if [ ! -d "$LISTDIR" ]; then' >> /usr/bin/addemailtofolder
5929
-  echo '  mkdir -m 700 $LISTDIR' >> /usr/bin/addemailtofolder
5930
-  echo '  mkdir -m 700 $LISTDIR/tmp' >> /usr/bin/addemailtofolder
5931
-  echo '  mkdir -m 700 $LISTDIR/new' >> /usr/bin/addemailtofolder
5932
-  echo '  mkdir -m 700 $LISTDIR/cur' >> /usr/bin/addemailtofolder
5933
-  echo 'fi' >> /usr/bin/addemailtofolder
5934
-  echo 'chown -R $MYUSERNAME:$MYUSERNAME $LISTDIR' >> /usr/bin/addemailtofolder
5935
-  echo 'echo "" >> $PM' >> /usr/bin/addemailtofolder
5936
-  echo 'echo ":0" >> $PM' >> /usr/bin/addemailtofolder
5937
-  echo 'echo "  * ^From: $EMAILADDRESS" >> $PM' >> /usr/bin/addemailtofolder
5938
-  echo 'echo "$LISTDIR/new" >> $PM' >> /usr/bin/addemailtofolder
5939
-  echo 'chown $MYUSERNAME:$MYUSERNAME $PM' >> /usr/bin/addemailtofolder
5940
-  echo 'if [ ! -f "$MUTTRC" ]; then' >> /usr/bin/addemailtofolder
5941
-  echo '  cp /etc/Muttrc $MUTTRC' >> /usr/bin/addemailtofolder
5942
-  echo '  chown $MYUSERNAME:$MYUSERNAME $MUTTRC' >> /usr/bin/addemailtofolder
5943
-  echo 'fi' >> /usr/bin/addemailtofolder
5944
-  echo 'PROCMAILLOG=/home/$MYUSERNAME/log' >> /usr/bin/addemailtofolder
5945
-  echo 'if [ ! -d $PROCMAILLOG ]; then' >> /usr/bin/addemailtofolder
5946
-  echo '  mkdir $PROCMAILLOG' >> /usr/bin/addemailtofolder
5947
-  echo '  chown -R $MYUSERNAME:$MYUSERNAME $PROCMAILLOG' >> /usr/bin/addemailtofolder
5948
-  echo 'fi' >> /usr/bin/addemailtofolder
5949
-  echo 'MUTT_MAILBOXES=$(grep "mailboxes =" $MUTTRC)' >> /usr/bin/addemailtofolder
5950
-  echo 'if [[ $MUTT_MAILBOXES != *$MAILINGLIST* ]]; then' >> /usr/bin/addemailtofolder
5951
-  echo '  if ! grep -q "=$MAILINGLIST" $MUTTRC; then' >> /usr/bin/addemailtofolder
5952
-  echo '    sed -i "s|$MUTT_MAILBOXES|$MUTT_MAILBOXES =$MAILINGLIST|g" $MUTTRC' >> /usr/bin/addemailtofolder
5953
-  echo '    chown $MYUSERNAME:$MYUSERNAME $MUTTRC' >> /usr/bin/addemailtofolder
5954
-  echo '  fi' >> /usr/bin/addemailtofolder
5955
-  echo 'fi' >> /usr/bin/addemailtofolder
5956
-  echo 'exit 0' >> /usr/bin/addemailtofolder
5957
-  chmod +x /usr/bin/addemailtofolder
5958
-  echo 'folders_for_email_addresses' >> $COMPLETION_FILE
5959
-}
5960
-
5961 5908
 function create_public_mailing_list {
5962 5909
   if [[ $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" ]]; then
5963 5910
       return
@@ -6086,7 +6033,7 @@ function create_private_mailing_list {
6086 6033
   sed -i 's/#smtp_port: 25/smtp_port: 465/g' /etc/schleuder/schleuder.conf
6087 6034
   sed -i 's/#superadminaddr: root@localhost/superadminaddr: root@localhost' /etc/schleuder/schleuder.conf
6088 6035
   schleuder-newlist $PRIVATE_MAILING_LIST@$DEFAULT_DOMAIN_NAME -realname "$PRIVATE_MAILING_LIST" -adminaddress $MY_EMAIL_ADDRESS -initmember $MY_EMAIL_ADDRESS -initmemberkey $MY_GPG_PUBLIC_KEY -nointeractive
6089
-  addemailtofolder $MY_USERNAME $PRIVATE_MAILING_LIST@$DEFAULT_DOMAIN_NAME $PRIVATE_MAILING_LIST
6036
+  freedombone-addemail -u $MY_USERNAME -e $PRIVATE_MAILING_LIST@$DEFAULT_DOMAIN_NAME -l $PRIVATE_MAILING_LIST
6090 6037
 
6091 6038
   echo 'schleuder:' > /etc/exim4/conf.d/router/550_exim4-config_schleuder
6092 6039
   echo '  debug_print = "R: schleuder for $local_part@$domain"' >> /etc/exim4/conf.d/router/550_exim4-config_schleuder
@@ -8952,7 +8899,6 @@ email_client
8952 8899
 email_archiving
8953 8900
 email_from_address
8954 8901
 configure_firewall_for_email
8955
-folders_for_email_addresses
8956 8902
 create_public_mailing_list
8957 8903
 #create_private_mailing_list
8958 8904
 encrypt_all_email

+ 98
- 0
src/freedombone-addemail View File

@@ -0,0 +1,98 @@
1
+#!/bin/bash
2
+
3
+# Adds an email address rule to the email configuration
4
+
5
+# License
6
+# =======
7
+#
8
+# Copyright (C) 2015 Bob Mottram <bob@robotics.uk.to>
9
+#
10
+# This program is free software: you can redistribute it and/or modify
11
+# it under the terms of the GNU General Public License as published by
12
+# the Free Software Foundation, either version 3 of the License, or
13
+# (at your option) any later version.
14
+#
15
+# This program is distributed in the hope that it will be useful,
16
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
17
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
+# GNU General Public License for more details.
19
+#
20
+# You should have received a copy of the GNU General Public License
21
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
22
+
23
+MYUSERNAME=$USER
24
+EMAILADDRESS=
25
+MAILINGLIST=
26
+
27
+function show_help {
28
+    echo ''
29
+    echo 'freedombone-addemail -u [username] -e [email address] -l [mailing list name]'
30
+    echo ''
31
+	exit 0
32
+}
33
+
34
+while [[ $# > 1 ]]
35
+do
36
+key="$1"
37
+
38
+case $key in
39
+    -h|--help)
40
+    show_help
41
+    ;;
42
+    -u|--user)
43
+    shift
44
+    MYUSERNAME="$1"
45
+    ;;
46
+    -e|--email)
47
+    shift
48
+    EMAILADDRESS="$1"
49
+    ;;
50
+    -l|--list)
51
+    shift
52
+    MAILINGLIST="$1"
53
+    ;;
54
+    *)
55
+    # unknown option
56
+    ;;
57
+esac
58
+shift
59
+done
60
+
61
+if ! [[ $MYUSERNAME && $EMAILADDRESS && $MAILINGLIST ]]; then
62
+    show_help
63
+fi
64
+
65
+MUTTRC=/home/$MYUSERNAME/.muttrc
66
+PM=/home/$MYUSERNAME/.procmailrc
67
+LISTDIR=/home/$MYUSERNAME/Maildir/$MAILINGLIST
68
+
69
+if [ ! -d "$LISTDIR" ]; then
70
+    mkdir -m 700 $LISTDIR
71
+    mkdir -m 700 $LISTDIR/tmp
72
+    mkdir -m 700 $LISTDIR/new
73
+    mkdir -m 700 $LISTDIR/cur
74
+fi
75
+chown -R $MYUSERNAME:$MYUSERNAME $LISTDIR
76
+echo "" >> $PM
77
+echo ":0" >> $PM
78
+echo "  * ^From: $EMAILADDRESS" >> $PM
79
+echo "$LISTDIR/new" >> $PM
80
+chown $MYUSERNAME:$MYUSERNAME $PM
81
+if [ ! -f "$MUTTRC" ]; then
82
+  cp /etc/Muttrc $MUTTRC
83
+  chown $MYUSERNAME:$MYUSERNAME $MUTTRC
84
+fi
85
+PROCMAILLOG=/home/$MYUSERNAME/log
86
+if [ ! -d $PROCMAILLOG ]; then
87
+  mkdir $PROCMAILLOG
88
+  chown -R $MYUSERNAME:$MYUSERNAME $PROCMAILLOG
89
+fi
90
+MUTT_MAILBOXES=$(grep "mailboxes =" $MUTTRC)
91
+if [[ $MUTT_MAILBOXES != *$MAILINGLIST* ]]; then
92
+  if ! grep -q "=$MAILINGLIST" $MUTTRC; then
93
+    sed -i "s|$MUTT_MAILBOXES|$MUTT_MAILBOXES =$MAILINGLIST|g" $MUTTRC
94
+    chown $MYUSERNAME:$MYUSERNAME $MUTTRC
95
+  fi
96
+fi
97
+
98
+exit 0