On 13Jun2019 14:26, Larry Rosenman <l...@lerctr.org> wrote:
I do the following trick:

source "gpg -q --textmode -d ~/.neomutt/passwords.gpg  |"

where the passwords.gpg file sets my_ vars for all my
passwords.

Doesn't that require interaction on each mutt startup? I appreciate that this has the password nicely encrypted when idle and doesn't display them on the command line or in environment variables.

I've got various mail credentials in my .fetchmailrc (I now use getmail, but whatever), so I've got scripts to fetch them from it. Should port it to the getmail config some time.

So, the muttrc config line which presages accessing my phone IMAP account:

 source 'cs-mutt-imap-settings cs-iphone-cc'

cs-mutt-imap-settings is this script:

 #!/bin/sh
 #
 # Read clause form .fetchmailrc, recite mutt IMAP settings.
 #   - Cameron Simpson <c...@cskk.id.au> 26sep2015
 #

 set -ue

 clause=$1
 shift

 fetchmailclause "$clause" \
 | awk '$1 == "user" { user=$2 }
        $1 == "pass" { pass=$2 }
        $1 == "via"  { via=$2 }
        END          { print "set imap_user='\''" user "'\''"
                       print "set imap_pass='\''" pass "'\''"
                       print "set my_imap_host='\''" via "'\''"
                     }
       '

and fetchmailclause is this script:

 #!/bin/sh
 #
 # Pull out a single clause from a .fetchmailrc file.
 # The parsing's a little simplistic but it works fairly well.
 #    - Cameron Simpson <c...@cskk.id.au> 09sep2003
 #

 rc=$HOME/.fetchmailrc
 start=skip    # vs poll

 cmd=$0
 usage="Usage: $cmd [-f fetchmailrc] [clause]"

 badopts=

 [ "x$1" = x-f ] && { rc=$2; shift; shift; }

 [ $# = 0 ] && exec awk '$1 == "spoll" || $1 == "skip" { print $2 }' "$rc"

 clause=$1; shift
[ $# = 0 ] || { echo "$cmd: extra arguments after clause: $*" >&2; badopts=1; }

 [ $badopts ] && { echo "$usage" >&2; exit 2; }

 exec sed -ne '
         y/    / /
         s/$/ /
         '"    /^ *skip  *$clause /b start
         /^ *poll  *$clause /b start
         d
         :start
         n
         y/    / /
         s/   */ /g
         s/^ //
         s/ $//
         /^#/b start
         /^$/b start
         /^skip /d
         /^poll /d
         p
         b start" "$rc"

So if the OP already has the credentials sitting around elsewhere they could automate getting them.

This approach does have the downside that credentials are still in files in the clear though.

Cheers,
Cameron Simpson <c...@cskk.id.au>

Reply via email to