Como eu passo uma variável de um shell script para o meu .muttrc?

4

Eu gostaria de mutt ( mutt-kz , na verdade - adoraria migrar para neomutt , mas é um projeto maior) para obter minha senha SMTP de pass , para que eu não precise mantê-lo armazenado em texto puro no meu arquivo de configuração, mas não sei como passar a senha corretamente para o meu .muttrc .

Isso é o que eu tenho em .muttrc :

source ~/.mutt/pass.sh|
set smtp_pass = $my_pass

E, em seguida, .mutt/pass.sh contém:

#! /bin/bash
my_pass=$(pass Example/user)

Se eu adicionar echo ${my_pass} a pass.sh e executá-lo a partir da linha de comando, ele ecoará minha senha.

Quando eu inicio o mutt-kz , sou solicitado a desbloquear minha chave pass gpg, então algo está funcionando, mas quando tento enviar e-mails do Mutt, ele pergunta pela minha senha SMTP e falha se eu não fornecer a mensagem não é enviada: ("Falha na autenticação SASL")

Então ... como faço para passar corretamente a variável do meu shell script para meu .muttrc ?

    
por Amanda 03.01.2018 / 20:15

2 respostas

2

O programa ~/.mutt/pass.sh deve produzir uma saída parecida com

set my_pass = swordfish

Então pode ser algo como

#!/bin/sh
echo "set my_pass = swordfish"

Observe que, se sua senha contiver determinados caracteres especiais ( \'" e espaço em branco), será necessário cite . Por exemplo, se sua senha estiver no arquivo de texto ~/passwords/smtp.txt , você poderá usar:

#!/bin/sh
~/passwords/smtp.txt sed 's/["$'\]/\&/g; s/^/set my_pass = "/; s/$/"/'

Para a senha sword\fish , isso imprime set my_pass="sword\fish" .

Se você usar o chaveiro do Gnome para armazenar suas senhas, poderá usar o utilitário secret-tool para ler sua senha do chaveiro. Por exemplo, isso é o que eu uso para uma senha do Office 365 (com uma senha que não contém nenhum caractere especial que precise ser citado):

source 'printf "set imap_pass="; secret-tool lookup https://login.microsoftonline.com/common/login |'
    
por 03.01.2018 / 22:01
1

A outra possibilidade seria a utilização da expansão backtick. Então você deve ser capaz de fazer:

my_pass = 'pass Example/user'

Se você migrar para neomutt , você também poderá definir a variável com a linha de comando, ou seja,

my_pass=$(pass Example/user) mutt

e, em seguida, você pode usar a variável my_pass como no seu exemplo.

    
por 04.01.2018 / 20:34