This commit is contained in:
Fred Frey 2018-03-17 01:16:22 -04:00
commit 944d8cb128
4 changed files with 28 additions and 31 deletions

1
.gitignore vendored
View File

@ -4,3 +4,4 @@ accounts/
*.pyc *.pyc
personal.muttrc personal.muttrc
thunderbird/ thunderbird/
autoconf/log

View File

@ -10,8 +10,8 @@ The mutt-wizard is all of this in a simple ncurses menu. It's really just a litt
The system takes an email and autodetect its server settings, generating a muttrc and offlineimaprc profile automatically. If it can't do so, it simply prompts you for these (which you can easily look up) and will put them all in the right places. You get: The system takes an email and autodetect its server settings, generating a muttrc and offlineimaprc profile automatically. If it can't do so, it simply prompts you for these (which you can easily look up) and will put them all in the right places. You get:
+ Automatic configuration of mutt and offlineimap + Automatic configuration of mutt and offlineimap.
+ Automatic encryption and safe storage of passwords which are used by mutt and offlineimap when necessary + Automatic encryption and safe storage of passwords which are used by mutt and offlineimap when necessary.
+ Multiple account management in mutt: jump from account to account with the `i` prefix in mutt: `i1`: first email account, `i5`: fifth, etc. + Multiple account management in mutt: jump from account to account with the `i` prefix in mutt: `i1`: first email account, `i5`: fifth, etc.
+ Easy movement to mail folders in mutt: `gi`: go to inbox, `gs` to sent mail, `ga` to archive, `gS` to spam, `gd` to drafts, etc. + Easy movement to mail folders in mutt: `gi`: go to inbox, `gs` to sent mail, `ga` to archive, `gS` to spam, `gd` to drafts, etc.
+ Some default controls and colors. This system is going to be integrated into my [public auto-rice script](https://larbs.xyz) so I want it to look pretty and be usable out the box. + Some default controls and colors. This system is going to be integrated into my [public auto-rice script](https://larbs.xyz) so I want it to look pretty and be usable out the box.
@ -27,8 +27,6 @@ Note also that Gmail and some providers require you to enable sign-ins from thir
## Installation and Dependencies ## Installation and Dependencies
> **MacOS prerequisites** - Install `iproute2mac` and `mpv` ( brew install iproute2mac mpv )
`dialog`, `neomutt` and `offlineimap` should be installed. You also need to have a GPG public/private key pair for the wizard to automatically store your passwords. The whole repo should be cloned to `~/.config/mutt/`. (If you have a previous mutt folder, you'll want to back it up or delete it first.) `dialog`, `neomutt` and `offlineimap` should be installed. You also need to have a GPG public/private key pair for the wizard to automatically store your passwords. The whole repo should be cloned to `~/.config/mutt/`. (If you have a previous mutt folder, you'll want to back it up or delete it first.)
``` ```
@ -37,13 +35,7 @@ git clone https://github.com/LukeSmithxyz/mutt-wizard.git ~/.config/mutt
You will want to delete or rename your current `~/.offlineimaprc` as well, as although you can later modify the `~/.offlineimaprc` produced by the script, you must have no file there the first time you add your first account or the wizard will assume some settings are already set which aren't. You will want to delete or rename your current `~/.offlineimaprc` as well, as although you can later modify the `~/.offlineimaprc` produced by the script, you must have no file there the first time you add your first account or the wizard will assume some settings are already set which aren't.
Just run `mutt-wizard.sh` for all the options, to install an account: Just run `mutt-wizard.sh` and choose to add an account. After you do so, you may run `offlineimap` to begin the mailsync, and you will be able to run neomutt and see your mail.
* First, select the "Add an account" option and give the script your account information.
* Second, in a separate terminal, start your mail sync by running `offlineimap` or `offlineimap -a <your account name>`. This will start downloading all your mail for offline access.
* Third, once your mailbox has started to download, reenter the script and select the "Auto-detect mailboxes" open. This will finalize the install and let you open up mutt to see your mail.
Whenever you want to check for mail, just run the `offlineimap` command again.
### Non-essential dependencies ### Non-essential dependencies
@ -54,6 +46,7 @@ The automatically deployed configs will look for certain programs for certain ex
+ `notmuch` -- for mail searching and indexing set to `ctrl-f`. Be sure to run `notmuch setup`. Remember your mail is in `~/.mail/` when you configure notmuch. + `notmuch` -- for mail searching and indexing set to `ctrl-f`. Be sure to run `notmuch setup`. Remember your mail is in `~/.mail/` when you configure notmuch.
+ `w3m` and/or `w3mimg` -- for viewing images. Like .pdfs, view in the attachments menu. + `w3m` and/or `w3mimg` -- for viewing images. Like .pdfs, view in the attachments menu.
+ A cron manager if you want the autosync feature. + A cron manager if you want the autosync feature.
+ `iproute2mac` for Mac users who want the autosync feature.
+ `mpv` if you want the autosync feature to notify you with a ding on new mail. + `mpv` if you want the autosync feature to notify you with a ding on new mail.
### "Wait? The script asks for my passwords?" ### "Wait? The script asks for my passwords?"

View File

@ -7,7 +7,6 @@ remoterepository = $title-remote
auth_mechanisms = LOGIN auth_mechanisms = LOGIN
type = $type type = $type
remoteuser = $login remoteuser = $login
sslcacerfile = /etc/ssl/cets/ca-certificates.crt
remotepasseval = mailpasswd("$title") remotepasseval = mailpasswd("$title")
remotehost = $imap remotehost = $imap
remoteport = $iport remoteport = $iport

View File

@ -9,6 +9,12 @@ fi
muttdir="$HOME/.config/mutt/" muttdir="$HOME/.config/mutt/"
createMailboxes() { rm -f "$muttdir"autoconf/log
offlineimap --info -a $1 2&> "$muttdir"autoconf/log
for box in $(sed -n '/^Folderlist/,/^Folderlist/p' "$muttdir"autoconf/log |
grep "^ " | awk '{print $1}' | sed -e 's/\//./g')
do mkdir -p $HOME/.mail/$1/$box; done ;}
chooseSync() { (crontab -l && testSync) || dialog --msgbox "No cronjob manager detected. Please install one and return to enable automatic mailsyncing" 10 60 ;} chooseSync() { (crontab -l && testSync) || dialog --msgbox "No cronjob manager detected. Please install one and return to enable automatic mailsyncing" 10 60 ;}
testSync() { (crontab -l | grep .config/mutt/etc/mailsync && removeSync) || addSync ;} testSync() { (crontab -l | grep .config/mutt/etc/mailsync && removeSync) || addSync ;}
@ -113,7 +119,7 @@ removeAccount() { sed -ie "
rm "$muttdir"accounts/$1.muttrc rm "$muttdir"accounts/$1.muttrc
rm "$muttdir"credentials/$1.gpg rm "$muttdir"credentials/$1.gpg
rm -rf "$muttdir"accounts/$1 rm -rf "$muttdir"accounts/$1
sed -i '/$1.muttrc/d' "$muttdir"personal.muttrc ;} sed -i "/$1.muttrc/d" "$muttdir"personal.muttrc ;}
manual() { \ manual() { \
imap=$( dialog --inputbox "Insert the IMAP server for your email provider (excluding the port number)" 10 60 3>&1 1>&2 2>&3 3>&- ) imap=$( dialog --inputbox "Insert the IMAP server for your email provider (excluding the port number)" 10 60 3>&1 1>&2 2>&3 3>&- )
@ -196,12 +202,12 @@ addAccount() {
grep "$muttdir"personal.muttrc -e "^source .*accounts.*" >/dev/null && echo there || \ grep "$muttdir"personal.muttrc -e "^source .*accounts.*" >/dev/null && echo there || \
echo "source ${muttdir}accounts/$title.muttrc" >> "$muttdir"personal.muttrc echo "source ${muttdir}accounts/$title.muttrc" >> "$muttdir"personal.muttrc
dialog --title "Finalizing your account." --msgbox "The account \"$title\" has been added. Now to finalize installation, do the following: dialog --title "Finalizing your account." --infobox "The account \"$title\" has been added. Now attempting to configure mail directories...
1) Run offlineimap to start the sync. This will start your mail sync. This may take several seconds..." 10 70
2) After or while running offlineimap, choose the \"autodetect mailboxes\" option, which will finalize your config files based on the directory structure of the downloaded mailbox. createMailboxes $title || (clear && exit)
detectMailboxes $title
After that, you will be able to open neomutt to your email account." 13 80 ;} dialog --title "Account added." --msgbox "Your "$fulladdr" account has been added. To start the download of your mail, you can manually run \`offlineimap -a $title\` in a terminal. The first sync may take some time depending on the amount of your mail." 8 60 ;}
# This is run when a user chooses to add an account. # This is run when a user chooses to add an account.
chooseAdd() { \ chooseAdd() { \
@ -222,15 +228,14 @@ wipe () { rm $HOME/.offlineimaprc
while : ; while : ;
do do
choice=$(dialog --title "Luke's mutt/offlineIMAP wizard" --nocancel \ choice=$(dialog --title "Luke's mutt/offlineIMAP wizard" --nocancel \
--menu "What would you like to do?" 16 45 8 \ --menu "What would you like to do?" 14 45 7 \
0 "List all email accounts configured." \ 0 "List all email accounts configured." \
1 "Add an email account." \ 1 "Add an email account." \
2 "Auto-detect mailboxes for an account." \ 2 "Enable/disable autosync." \
3 "Enable/disable autosync." \ 3 "Change an account's password." \
4 "Change an account's password." \ 4 "Remove an email account." \
5 "Remove an email account." \ 5 "Remove all email accounts." \
6 "Remove all email accounts." \ 6 "Exit this wizard." \
7 "Exit this wizard." \
3>&1 1>&2 2>&3 3>&1 ) 3>&1 1>&2 2>&3 3>&1 )
case $choice in case $choice in
@ -238,11 +243,10 @@ case $choice in
$(grep ~/.offlineimaprc -e "^accounts =" | sed 's/accounts =//g') $(grep ~/.offlineimaprc -e "^accounts =" | sed 's/accounts =//g')
" 6 60;; " 6 60;;
1) chooseAdd;; 1) chooseAdd;;
2) detectWarning && chooseDetect ;; 2) chooseSync;;
3) chooseSync;; 3) inventory && for i in $userchoices; do changePassword $i ; done;;
4) inventory && for i in $userchoices; do changePassword $i ; done;; 4) inventory && for i in $userchoices; do removeAccount $i ; done;;
5) inventory && for i in $userchoices; do removeAccount $i ; done;; 5) (dialog --defaultno --title "Wipe all custom neomutt/offlineIMAP settings?" --yesno "Would you like to wipe all of the mutt/offlineIMAP settings generated by the system?" 6 60 && wipe) ;;
6) (dialog --defaultno --title "Wipe all custom neomutt/offlineIMAP settings?" --yesno "Would you like to wipe all of the mutt/offlineIMAP settings generated by the system?" 6 60 && wipe) ;; 6) clear && break ;;
7) clear && break ;;
esac esac
done done