Fred Frey 6 years ago
parent
commit
944d8cb128
4 changed files with 28 additions and 31 deletions
  1. +1
    -0
      .gitignore
  2. +4
    -11
      README.md
  3. +0
    -1
      autoconf/offlineimap_profile
  4. +23
    -19
      mutt-wizard.sh

+ 1
- 0
.gitignore View File

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

+ 4
- 11
README.md 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:

+ Automatic configuration of mutt and offlineimap
+ Automatic encryption and safe storage of passwords which are used by mutt and offlineimap when necessary
+ Automatic configuration of mutt and offlineimap.
+ 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.
+ 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.
@@ -27,8 +27,6 @@ Note also that Gmail and some providers require you to enable sign-ins from thir

## 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.)

```
@@ -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.

Just run `mutt-wizard.sh` for all the options, to install an account:

* 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.
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.

### 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.
+ `w3m` and/or `w3mimg` -- for viewing images. Like .pdfs, view in the attachments menu.
+ 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.

### "Wait? The script asks for my passwords?"


+ 0
- 1
autoconf/offlineimap_profile View File

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


+ 23
- 19
mutt-wizard.sh View File

@@ -9,6 +9,12 @@ fi

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 ;}
testSync() { (crontab -l | grep .config/mutt/etc/mailsync && removeSync) || addSync ;}

@@ -113,7 +119,7 @@ removeAccount() { sed -ie "
rm "$muttdir"accounts/$1.muttrc
rm "$muttdir"credentials/$1.gpg
rm -rf "$muttdir"accounts/$1
sed -i '/$1.muttrc/d' "$muttdir"personal.muttrc ;}
sed -i "/$1.muttrc/d" "$muttdir"personal.muttrc ;}

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>&- )
@@ -196,12 +202,12 @@ addAccount() {
grep "$muttdir"personal.muttrc -e "^source .*accounts.*" >/dev/null && echo there || \
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:

1) Run offlineimap to start the sync. This will start your mail sync.
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.
dialog --title "Finalizing your account." --infobox "The account \"$title\" has been added. Now attempting to configure mail directories...

After that, you will be able to open neomutt to your email account." 13 80 ;}
This may take several seconds..." 10 70
createMailboxes $title || (clear && exit)
detectMailboxes $title
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.
chooseAdd() { \
@@ -222,15 +228,14 @@ wipe () { rm $HOME/.offlineimaprc
while : ;
do
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." \
1 "Add an email account." \
2 "Auto-detect mailboxes for an account." \
3 "Enable/disable autosync." \
4 "Change an account's password." \
5 "Remove an email account." \
6 "Remove all email accounts." \
7 "Exit this wizard." \
2 "Enable/disable autosync." \
3 "Change an account's password." \
4 "Remove an email account." \
5 "Remove all email accounts." \
6 "Exit this wizard." \
3>&1 1>&2 2>&3 3>&1 )

case $choice in
@@ -238,11 +243,10 @@ case $choice in
$(grep ~/.offlineimaprc -e "^accounts =" | sed 's/accounts =//g')
" 6 60;;
1) chooseAdd;;
2) detectWarning && chooseDetect ;;
3) chooseSync;;
4) inventory && for i in $userchoices; do changePassword $i ; done;;
5) inventory && for i in $userchoices; do removeAccount $i ; done;;
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) ;;
7) clear && break ;;
2) chooseSync;;
3) inventory && for i in $userchoices; do changePassword $i ; done;;
4) 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) clear && break ;;
esac
done

Loading…
Cancel
Save