| @@ -10,18 +10,20 @@ command -V gpg >/dev/null 2>&1 && GPG="gpg" || GPG="gpg2" | |||||
| ! command -v mbsync >/dev/null && printf "\`mbsync (isync package)\` must be installed to run mutt-wizard.\\n" && exit | ! command -v mbsync >/dev/null && printf "\`mbsync (isync package)\` must be installed to run mutt-wizard.\\n" && exit | ||||
| prefix="/usr/local" | prefix="/usr/local" | ||||
| muttdir="$HOME/.config/mutt" # Main mutt config location | |||||
| accdir="$muttdir/accounts" # Directory for account settings | |||||
| maildir="$HOME/.local/share/mail" # Location of mail storage | |||||
| namere="^[a-z_][a-z0-9_-]*$" # Regex to ensure viable username | |||||
| emailre=".+@.+\..+" # Regex to confirm valid email address | |||||
| muttdir="${XDG_CONFIG_HOME:-$HOME/.config}/mutt" # Main mutt config location | |||||
| accdir="$muttdir/accounts" # Directory for account settings | |||||
| maildir="${XDG_DATA_HOME:-$HOME/.local/share}/mail" # Location of mail storage | |||||
| namere="^[a-z_][a-z0-9_-]*$" # Regex to ensure viable username | |||||
| emailre=".+@.+\..+" # Regex to confirm valid email address | |||||
| muttshare="$prefix/share/mutt-wizard" | muttshare="$prefix/share/mutt-wizard" | ||||
| mbsyncrc="$HOME/.mbsyncrc" | |||||
| mbsyncrc="${MBSYNCRC:-$HOME/.mbsyncrc}" | |||||
| mwconfig="$muttshare/mutt-wizard.muttrc" | mwconfig="$muttshare/mutt-wizard.muttrc" | ||||
| cachedir="$HOME/.cache/mutt-wizard" | |||||
| cachedir="${XDG_CACHE_HOME:-$HOME/.cache}/mutt-wizard" | |||||
| muttrc="$muttdir/muttrc" | muttrc="$muttdir/muttrc" | ||||
| msmtprc="$HOME/.config/msmtp/config" | |||||
| msmtprc="${XDG_CONFIG_HOME:-$HOME/.config}/msmtp/config" | |||||
| msmtplog="${XDG_CONFIG_HOME:-$HOME/.config}/msmtp/msmtp.log" | |||||
| ssltype="IMAPS" # This is later changed to `None` later in the script if using Protonmail | ssltype="IMAPS" # This is later changed to `None` later in the script if using Protonmail | ||||
| alias mbsync='mbsync -c "$mbsyncrc"' | |||||
| for x in "/etc/ssl/certs/ca-certificates.crt" "/etc/pki/tls/certs/ca-bundle.crt" "/etc/ssl/ca-bundle.pem" "/etc/pki/tls/cacert.pem" "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem" "/etc/ssl/cert.pem" "/usr/local/share/ca-certificates/" | for x in "/etc/ssl/certs/ca-certificates.crt" "/etc/pki/tls/certs/ca-bundle.crt" "/etc/ssl/ca-bundle.pem" "/etc/pki/tls/cacert.pem" "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem" "/etc/ssl/cert.pem" "/usr/local/share/ca-certificates/" | ||||
| do | do | ||||
| @@ -38,7 +40,7 @@ msmtp_header="defaults | |||||
| auth on | auth on | ||||
| tls on | tls on | ||||
| tls_trust_file $sslcert | tls_trust_file $sslcert | ||||
| logfile ~/.config/msmtp/msmtp.log | |||||
| logfile $msmtplog | |||||
| " | " | ||||
| msmtp_profile="account $title | msmtp_profile="account $title | ||||
| host $smtp | host $smtp | ||||
| @@ -59,8 +61,8 @@ CertificateFile $sslcert | |||||
| MaildirStore $title-local | MaildirStore $title-local | ||||
| Subfolders Verbatim | Subfolders Verbatim | ||||
| Path ~/.local/share/mail/$title/ | |||||
| Inbox ~/.local/share/mail/$title/INBOX | |||||
| Path ${XDG_DATA_HOME:-$HOME/.local/share}/mail/$title/ | |||||
| Inbox ${XDG_DATA_HOME:-$HOME/.local/share}/mail/$title/INBOX | |||||
| Flatten . | Flatten . | ||||
| Channel $title | Channel $title | ||||
| @@ -192,7 +194,7 @@ EOF | |||||
| echo "$maxmes" | grep "[1-9]" >/dev/null || maxmes="0" | echo "$maxmes" | grep "[1-9]" >/dev/null || maxmes="0" | ||||
| getpass | getpass | ||||
| getprofiles | getprofiles | ||||
| mkdir -p "$muttdir" "$accdir" "$cachedir/$title/bodies" "$HOME/.config/msmtp" | |||||
| mkdir -p "$muttdir" "$accdir" "$cachedir/$title/bodies" "${XDG_CONFIG_HOME:-$HOME/.config}/msmtp" | |||||
| getaccounts | getaccounts | ||||
| for x in $(seq 1 9); do echo "$accounts" | grep "$x" >/dev/null 2>&1 || { export idnum="$x"; break ;}; done | for x in $(seq 1 9); do echo "$accounts" | grep "$x" >/dev/null 2>&1 || { export idnum="$x"; break ;}; done | ||||
| [ ! -f "$msmtprc" ] && echo "$msmtp_header" > "$msmtprc" | [ ! -f "$msmtprc" ] && echo "$msmtp_header" > "$msmtprc" | ||||
| @@ -202,6 +204,7 @@ EOF | |||||
| protonmail.ch|protonmail.com|pm.me) protonfinger || return 1 ;; | protonmail.ch|protonmail.com|pm.me) protonfinger || return 1 ;; | ||||
| esac | esac | ||||
| echo "$mutt_profile" > "$accdir/$idnum-$title.muttrc" | echo "$mutt_profile" > "$accdir/$idnum-$title.muttrc" | ||||
| mkdir -p "${mbsyncrc%/*}" | |||||
| echo "$mbsync_profile" >> "$mbsyncrc" | echo "$mbsync_profile" >> "$mbsyncrc" | ||||
| notmuchauto | notmuchauto | ||||
| [ ! -f "$muttrc" ] && echo "# vim: filetype=neomuttrc" > "$muttrc" && echo "muttrc created." | [ ! -f "$muttrc" ] && echo "# vim: filetype=neomuttrc" > "$muttrc" && echo "muttrc created." | ||||
| @@ -288,7 +291,7 @@ asktype() { while : ; do | |||||
| esac; done ;} | esac; done ;} | ||||
| purge() { confirm "delete all account data" || exit | purge() { confirm "delete all account data" || exit | ||||
| rm -rf "$mbsyncrc" "$accdir" "$HOME/.config/msmtp" "$cachedir" | |||||
| rm -rf "$mbsyncrc" "$accdir" "${XDG_CONFIG_HOME:-$HOME/.config}/msmtp" "$cachedir" | |||||
| echo "All configs and account settings have been purged." | echo "All configs and account settings have been purged." | ||||
| sed -ibu "/\# mw-autogenerated/d" "$muttrc" ; rm -f "$muttrc"bu | sed -ibu "/\# mw-autogenerated/d" "$muttrc" ; rm -f "$muttrc"bu | ||||
| } | } | ||||
| @@ -326,7 +329,7 @@ case "$1" in | |||||
| add) asktype && askinfo && tryconnect && finalize || delete ;; | add) asktype && askinfo && tryconnect && finalize || delete ;; | ||||
| pass) pick "change the password of" && getpass ;; | pass) pick "change the password of" && getpass ;; | ||||
| delete) pick delete && confirm "delete the \`$title\` profile" && delete ;; | delete) pick delete && confirm "delete the \`$title\` profile" && delete ;; | ||||
| sync) syncwrapper $2 ;; | |||||
| sync) syncwrapper "$2" ;; | |||||
| purge) purge ;; | purge) purge ;; | ||||
| *) cat << EOF | *) cat << EOF | ||||
| mw: mutt-wizard, auto-configure email accounts for mutt | mw: mutt-wizard, auto-configure email accounts for mutt | ||||