| @@ -22,6 +22,7 @@ muttrc="$muttdir/muttrc" | |||||
| msmtprc="${XDG_CONFIG_HOME:-$HOME/.config}/msmtp/config" | msmtprc="${XDG_CONFIG_HOME:-$HOME/.config}/msmtp/config" | ||||
| msmtplog="${XDG_CONFIG_HOME:-$HOME/.config}/msmtp/msmtp.log" | msmtplog="${XDG_CONFIG_HOME:-$HOME/.config}/msmtp/msmtp.log" | ||||
| marker="# mw-autogenerated" | marker="# mw-autogenerated" | ||||
| imap_h_delim='.' | |||||
| alias mbsync='mbsync -c "$mbsyncrc"' | 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/" | ||||
| @@ -33,9 +34,27 @@ getaccounts() { accounts="$(find -L "$accdir" -type f | grep -o "[0-9]-.*.muttrc | |||||
| list() { getaccounts && [ -n "$accounts" ] && echo "$accounts" ;} | list() { getaccounts && [ -n "$accounts" ] && echo "$accounts" ;} | ||||
| updihdelim() { | |||||
| if command -V curl >/dev/null 2>&1 && command -V sed >/dev/null 2>&1 ; then | |||||
| imap_h_delim="$(printf -- '-u %s:%s\n' "$login" "$(pass "$pass_prefix$fulladdr")" |\ | |||||
| curl -s -k --url "imaps://$imap" -K- --request 'LIST "" ""' |\ | |||||
| sed -n 's/\* LIST (\\Noselect) "\(.*\)" ""/\1/p')" | |||||
| fi | |||||
| if [ -z "${imap_h_delim}" ] || [ "${imap_h_delim}" = '\' ] || [ "${imap_h_delim}" = '/' ]; then | |||||
| printf '%s\n' 'Defaulting IMAP hierarchy delimiter to "."' | |||||
| imap_h_delim='.' | |||||
| fi | |||||
| } | |||||
| getprofiles() { \ | getprofiles() { \ | ||||
| unset msmtp_header msmtp_profile mutt_profile mbsync_profile | unset msmtp_header msmtp_profile mutt_profile mbsync_profile | ||||
| [ "$iport" = "1143" ] && imapssl="None" | [ "$iport" = "1143" ] && imapssl="None" | ||||
| # Determine IMAP hierarchy delimiter | |||||
| updihdelim | |||||
| msmtp_header="defaults | msmtp_header="defaults | ||||
| auth on | auth on | ||||
| tls on | tls on | ||||
| @@ -63,7 +82,7 @@ MaildirStore $fulladdr-local | |||||
| Subfolders Verbatim | Subfolders Verbatim | ||||
| Path ${XDG_DATA_HOME:-$HOME/.local/share}/mail/$fulladdr/ | Path ${XDG_DATA_HOME:-$HOME/.local/share}/mail/$fulladdr/ | ||||
| Inbox ${XDG_DATA_HOME:-$HOME/.local/share}/mail/$fulladdr/INBOX | Inbox ${XDG_DATA_HOME:-$HOME/.local/share}/mail/$fulladdr/INBOX | ||||
| Flatten . | |||||
| Flatten ${imap_h_delim} | |||||
| Channel $fulladdr | Channel $fulladdr | ||||
| Expunge Both | Expunge Both | ||||
| @@ -89,6 +108,8 @@ set header_cache = $cachedir/$fulladdr/headers | |||||
| set message_cachedir = $cachedir/$fulladdr/bodies | set message_cachedir = $cachedir/$fulladdr/bodies | ||||
| set mbox_type = Maildir | set mbox_type = Maildir | ||||
| set sidebar_delim_chars = '/${imap_h_delim}' | |||||
| bind index,pager gg noop | bind index,pager gg noop | ||||
| bind index,pager g noop | bind index,pager g noop | ||||
| bind index,pager M noop | bind index,pager M noop | ||||
| @@ -115,6 +136,8 @@ set mbox_type = Maildir | |||||
| set ssl_starttls = yes | set ssl_starttls = yes | ||||
| set ssl_force_tls = yes | set ssl_force_tls = yes | ||||
| set sidebar_delim_chars = '/${imap_h_delim}' | |||||
| bind index,pager gg noop | bind index,pager gg noop | ||||
| bind index,pager g noop | bind index,pager g noop | ||||
| bind index,pager M noop | bind index,pager M noop | ||||
| @@ -188,6 +211,7 @@ createpass() { echo "$password" > "$PASSWORD_STORE_DIR/$pass_prefix$fulladdr" | |||||
| "$GPG" -qer "$(cat "$PASSWORD_STORE_DIR/.gpg-id")" "$PASSWORD_STORE_DIR/$pass_prefix$fulladdr" | "$GPG" -qer "$(cat "$PASSWORD_STORE_DIR/.gpg-id")" "$PASSWORD_STORE_DIR/$pass_prefix$fulladdr" | ||||
| rm -f "$PASSWORD_STORE_DIR/$pass_prefix$fulladdr" ;} | rm -f "$PASSWORD_STORE_DIR/$pass_prefix$fulladdr" ;} | ||||
| writeinfo() { mkdir -p "$muttdir" "$accdir" "$cachedir/$fulladdr/bodies" "${XDG_CONFIG_HOME:-$HOME/.config}/msmtp" "$maildir/$fulladdr" | writeinfo() { mkdir -p "$muttdir" "$accdir" "$cachedir/$fulladdr/bodies" "${XDG_CONFIG_HOME:-$HOME/.config}/msmtp" "$maildir/$fulladdr" | ||||
| # Get accounts and find the first missing account number (max. 9). | # Get accounts and find the first missing account number (max. 9). | ||||
| @@ -230,7 +254,7 @@ Junk | |||||
| Trash | Trash | ||||
| Sent | Sent | ||||
| Archive" && return 0 | Archive" && return 0 | ||||
| if mailboxes="$(mbsync -l "$fulladdr" | sed 's/\//./')" >/dev/null 2>&1 && [ -n "$mailboxes" ]; then | |||||
| if mailboxes="$(mbsync -l "$fulladdr" | sed "s/\//${imap_h_delim}/")" >/dev/null 2>&1 && [ -n "$mailboxes" ]; then | |||||
| [ -n "${online+x}" ] && sed -ibu "/IMAPStore $fulladdr-remote$/,/# End profile/d" "$mbsyncrc" ; rm -f "$mbsyncrc"bu | [ -n "${online+x}" ] && sed -ibu "/IMAPStore $fulladdr-remote$/,/# End profile/d" "$mbsyncrc" ; rm -f "$mbsyncrc"bu | ||||
| return 0 | return 0 | ||||
| else | else | ||||