From e780194fb11bf3395f2d7290c7eaed0218156a1e Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Tue, 31 Mar 2015 22:29:03 +0100 Subject: [PATCH] Command for adding an email rule --- Makefile | 4 ++ debian/source/include-binaries | 1 + man/freedombone-addemail.1.gz | Bin 0 -> 489 bytes src/freedombone | 56 +------------------ src/freedombone-addemail | 98 +++++++++++++++++++++++++++++++++ 5 files changed, 104 insertions(+), 55 deletions(-) create mode 100644 man/freedombone-addemail.1.gz create mode 100755 src/freedombone-addemail diff --git a/Makefile b/Makefile index f2ed28b4..2d843369 100644 --- a/Makefile +++ b/Makefile @@ -18,6 +18,7 @@ install: install -m 755 src/${APP}-sec ${DESTDIR}${PREFIX}/bin install -m 755 src/${APP}-addcert ${DESTDIR}${PREFIX}/bin install -m 755 src/${APP}-addlist ${DESTDIR}${PREFIX}/bin + install -m 755 src/${APP}-addemail ${DESTDIR}${PREFIX}/bin mkdir -m 755 -p ${DESTDIR}${PREFIX}/share/man/man1 install -m 644 man/${APP}.1.gz ${DESTDIR}${PREFIX}/share/man/man1 install -m 644 man/${APP}-prep.1.gz ${DESTDIR}${PREFIX}/share/man/man1 @@ -27,6 +28,7 @@ install: install -m 644 man/${APP}-sec.1.gz ${DESTDIR}${PREFIX}/share/man/man1 install -m 644 man/${APP}-addcert.1.gz ${DESTDIR}${PREFIX}/share/man/man1 install -m 644 man/${APP}-addlist.1.gz ${DESTDIR}${PREFIX}/share/man/man1 + install -m 644 man/${APP}-addemail.1.gz ${DESTDIR}${PREFIX}/share/man/man1 uninstall: rm -f ${PREFIX}/share/man/man1/${APP}.1.gz rm -f ${PREFIX}/share/man/man1/${APP}-prep.1.gz @@ -36,6 +38,7 @@ uninstall: rm -f ${PREFIX}/share/man/man1/${APP}-sec.1.gz rm -f ${PREFIX}/share/man/man1/${APP}-addcert.1.gz rm -f ${PREFIX}/share/man/man1/${APP}-addlist.1.gz + rm -f ${PREFIX}/share/man/man1/${APP}-addemail.1.gz rm -rf ${PREFIX}/share/${APP} rm -f ${PREFIX}/bin/${APP} rm -f ${PREFIX}/bin/${APP}-prep @@ -45,6 +48,7 @@ uninstall: rm -f ${PREFIX}/bin/${APP}-sec rm -f ${PREFIX}/bin/${APP}-addcert rm -f ${PREFIX}/bin/${APP}-addlist + rm -f ${PREFIX}/bin/${APP}-addemail clean: rm -f \#* \.#* debian/*.substvars debian/*.log rm -fr deb.* debian/${APP} diff --git a/debian/source/include-binaries b/debian/source/include-binaries index b84e0425..56c3b6c7 100644 --- a/debian/source/include-binaries +++ b/debian/source/include-binaries @@ -6,3 +6,4 @@ man/freedombone-config.1.gz man/freedombone-sec.1.gz man/freedombone-addcert.1.gz man/freedombone-addlist.1.gz +man/freedombone-addemail.1.gz diff --git a/man/freedombone-addemail.1.gz b/man/freedombone-addemail.1.gz new file mode 100644 index 0000000000000000000000000000000000000000..62e48d19db257fd27f84ef093128b845a1c3c808 GIT binary patch literal 489 zcmV`3sI#MRaJ0G0X2LGL!*}V;m%&{ zQ|^4|K1lfYT^o~xsIe^TZaq6YGaIiburr8-R$SK@v7$i5goGZ1S3Q_91O1P^Pa%Z# zet!YN#-jOP2~c|`!yt&W354_EY!n9n<@*!CuqZ5?Zd5jCEf_BmoCa56_s1TsL)GzR zzvhc&HqGAQj67^T>8P2)zYrm8FW9LhVcS$hU4j(WL5u9jzm2ln)pWU@F6Lp-YGWro zkCn(PaE8@(hsJ^;E>@zYptK@TDGpe_F+v^~?6fS<#2x?WiK)Fr$_D6p&wx6f9W(~c z=Nom*rRR--ustYLoU{;Grb!^yct8W}EJIL~m?H@*PAcCL2?vitN+>mm`juG7nUvIY zIVFba4vyM`R*E{C?L4d0dna_=)Y=c^-WaT13pmZ-ExI`8kZ#7bz!mPbalm~^IlCZE zp>l3-2T4*2S9u=iS|yy>%H+wbtP)|ZN83>iH|xn_6$Yv1Fw>4!q~HtJ{KjamoycwM zA7ZD!1~E6ma=c8&%kcn4!_U|K(baWZO@-_BIe>H)_49jQsr2x(*qKRnr+=>tyT5(- ffnu%A25olNcHJW%w1P?R<*eWzY0FXoLIVH*t?2Gj literal 0 HcmV?d00001 diff --git a/src/freedombone b/src/freedombone index a6ba5fee..6db92d3c 100755 --- a/src/freedombone +++ b/src/freedombone @@ -5905,59 +5905,6 @@ function email_from_address { echo 'email_from_address' >> $COMPLETION_FILE } -function folders_for_email_addresses { - if [[ $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" ]]; then - return - fi - if grep -Fxq "folders_for_email_addresses" $COMPLETION_FILE; then - return - fi - echo '#!/bin/bash' > /usr/bin/addemailtofolder - echo 'MYUSERNAME=$1' >> /usr/bin/addemailtofolder - echo 'EMAILADDRESS=$2' >> /usr/bin/addemailtofolder - echo 'MAILINGLIST=$3' >> /usr/bin/addemailtofolder - echo 'MUTTRC=/home/$MYUSERNAME/.muttrc' >> /usr/bin/addemailtofolder - echo 'PM=/home/$MYUSERNAME/.procmailrc' >> /usr/bin/addemailtofolder - echo 'LISTDIR=/home/$MYUSERNAME/Maildir/$MAILINGLIST' >> /usr/bin/addemailtofolder - echo '' >> /usr/bin/addemailtofolder - echo 'if ! [[ $MYUSERNAME && $EMAILADDRESS && $MAILINGLIST ]]; then' >> /usr/bin/addemailtofolder - echo ' echo "addemailtofolder [user name] [email address] [mailing list name]"' >> /usr/bin/addemailtofolder - echo ' exit 1' >> /usr/bin/addemailtofolder - echo 'fi' >> /usr/bin/addemailtofolder - echo '' >> /usr/bin/addemailtofolder - echo 'if [ ! -d "$LISTDIR" ]; then' >> /usr/bin/addemailtofolder - echo ' mkdir -m 700 $LISTDIR' >> /usr/bin/addemailtofolder - echo ' mkdir -m 700 $LISTDIR/tmp' >> /usr/bin/addemailtofolder - echo ' mkdir -m 700 $LISTDIR/new' >> /usr/bin/addemailtofolder - echo ' mkdir -m 700 $LISTDIR/cur' >> /usr/bin/addemailtofolder - echo 'fi' >> /usr/bin/addemailtofolder - echo 'chown -R $MYUSERNAME:$MYUSERNAME $LISTDIR' >> /usr/bin/addemailtofolder - echo 'echo "" >> $PM' >> /usr/bin/addemailtofolder - echo 'echo ":0" >> $PM' >> /usr/bin/addemailtofolder - echo 'echo " * ^From: $EMAILADDRESS" >> $PM' >> /usr/bin/addemailtofolder - echo 'echo "$LISTDIR/new" >> $PM' >> /usr/bin/addemailtofolder - echo 'chown $MYUSERNAME:$MYUSERNAME $PM' >> /usr/bin/addemailtofolder - echo 'if [ ! -f "$MUTTRC" ]; then' >> /usr/bin/addemailtofolder - echo ' cp /etc/Muttrc $MUTTRC' >> /usr/bin/addemailtofolder - echo ' chown $MYUSERNAME:$MYUSERNAME $MUTTRC' >> /usr/bin/addemailtofolder - echo 'fi' >> /usr/bin/addemailtofolder - echo 'PROCMAILLOG=/home/$MYUSERNAME/log' >> /usr/bin/addemailtofolder - echo 'if [ ! -d $PROCMAILLOG ]; then' >> /usr/bin/addemailtofolder - echo ' mkdir $PROCMAILLOG' >> /usr/bin/addemailtofolder - echo ' chown -R $MYUSERNAME:$MYUSERNAME $PROCMAILLOG' >> /usr/bin/addemailtofolder - echo 'fi' >> /usr/bin/addemailtofolder - echo 'MUTT_MAILBOXES=$(grep "mailboxes =" $MUTTRC)' >> /usr/bin/addemailtofolder - echo 'if [[ $MUTT_MAILBOXES != *$MAILINGLIST* ]]; then' >> /usr/bin/addemailtofolder - echo ' if ! grep -q "=$MAILINGLIST" $MUTTRC; then' >> /usr/bin/addemailtofolder - echo ' sed -i "s|$MUTT_MAILBOXES|$MUTT_MAILBOXES =$MAILINGLIST|g" $MUTTRC' >> /usr/bin/addemailtofolder - echo ' chown $MYUSERNAME:$MYUSERNAME $MUTTRC' >> /usr/bin/addemailtofolder - echo ' fi' >> /usr/bin/addemailtofolder - echo 'fi' >> /usr/bin/addemailtofolder - echo 'exit 0' >> /usr/bin/addemailtofolder - chmod +x /usr/bin/addemailtofolder - echo 'folders_for_email_addresses' >> $COMPLETION_FILE -} - function create_public_mailing_list { if [[ $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" ]]; then return @@ -6086,7 +6033,7 @@ function create_private_mailing_list { sed -i 's/#smtp_port: 25/smtp_port: 465/g' /etc/schleuder/schleuder.conf sed -i 's/#superadminaddr: root@localhost/superadminaddr: root@localhost' /etc/schleuder/schleuder.conf 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 - addemailtofolder $MY_USERNAME $PRIVATE_MAILING_LIST@$DEFAULT_DOMAIN_NAME $PRIVATE_MAILING_LIST + freedombone-addemail -u $MY_USERNAME -e $PRIVATE_MAILING_LIST@$DEFAULT_DOMAIN_NAME -l $PRIVATE_MAILING_LIST echo 'schleuder:' > /etc/exim4/conf.d/router/550_exim4-config_schleuder echo ' debug_print = "R: schleuder for $local_part@$domain"' >> /etc/exim4/conf.d/router/550_exim4-config_schleuder @@ -8952,7 +8899,6 @@ email_client email_archiving email_from_address configure_firewall_for_email -folders_for_email_addresses create_public_mailing_list #create_private_mailing_list encrypt_all_email diff --git a/src/freedombone-addemail b/src/freedombone-addemail new file mode 100755 index 00000000..378f909a --- /dev/null +++ b/src/freedombone-addemail @@ -0,0 +1,98 @@ +#!/bin/bash + +# Adds an email address rule to the email configuration + +# License +# ======= +# +# Copyright (C) 2015 Bob Mottram +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +MYUSERNAME=$USER +EMAILADDRESS= +MAILINGLIST= + +function show_help { + echo '' + echo 'freedombone-addemail -u [username] -e [email address] -l [mailing list name]' + echo '' + exit 0 +} + +while [[ $# > 1 ]] +do +key="$1" + +case $key in + -h|--help) + show_help + ;; + -u|--user) + shift + MYUSERNAME="$1" + ;; + -e|--email) + shift + EMAILADDRESS="$1" + ;; + -l|--list) + shift + MAILINGLIST="$1" + ;; + *) + # unknown option + ;; +esac +shift +done + +if ! [[ $MYUSERNAME && $EMAILADDRESS && $MAILINGLIST ]]; then + show_help +fi + +MUTTRC=/home/$MYUSERNAME/.muttrc +PM=/home/$MYUSERNAME/.procmailrc +LISTDIR=/home/$MYUSERNAME/Maildir/$MAILINGLIST + +if [ ! -d "$LISTDIR" ]; then + mkdir -m 700 $LISTDIR + mkdir -m 700 $LISTDIR/tmp + mkdir -m 700 $LISTDIR/new + mkdir -m 700 $LISTDIR/cur +fi +chown -R $MYUSERNAME:$MYUSERNAME $LISTDIR +echo "" >> $PM +echo ":0" >> $PM +echo " * ^From: $EMAILADDRESS" >> $PM +echo "$LISTDIR/new" >> $PM +chown $MYUSERNAME:$MYUSERNAME $PM +if [ ! -f "$MUTTRC" ]; then + cp /etc/Muttrc $MUTTRC + chown $MYUSERNAME:$MYUSERNAME $MUTTRC +fi +PROCMAILLOG=/home/$MYUSERNAME/log +if [ ! -d $PROCMAILLOG ]; then + mkdir $PROCMAILLOG + chown -R $MYUSERNAME:$MYUSERNAME $PROCMAILLOG +fi +MUTT_MAILBOXES=$(grep "mailboxes =" $MUTTRC) +if [[ $MUTT_MAILBOXES != *$MAILINGLIST* ]]; then + if ! grep -q "=$MAILINGLIST" $MUTTRC; then + sed -i "s|$MUTT_MAILBOXES|$MUTT_MAILBOXES =$MAILINGLIST|g" $MUTTRC + chown $MYUSERNAME:$MYUSERNAME $MUTTRC + fi +fi + +exit 0