@@ -0,0 +1,38 @@ | |||
# mutt Offline email setup | |||
Mutt is one of the most rewarding programs one can use, but can be a pain in the ass to configure. Since my job is making power-user tools available for the masses I want to create a tool that automates most of mutt configuration so that users can simply give their email address and get a /comfy/ setup. At that, I don't just want a mutt wizard, but an offlineIMAP wizard, so users can easily access their mail offline as well, and a wizard that makes it easy to store passwords securely using gpg. | |||
## Progress | |||
The main scripts `mutt_install.sh` can create or add an account from a domain in `domain.csv` to `~/.offlineimaprc` without a problem. | |||
## YOU CAN HELP | |||
If you use mutt with a particular host or domain, put your server information in `domains.csv`! This will make everyone else who uses your email provider's life much easier! | |||
Or you can help monetarily via [Patreon](https://patreon.com/lukesmith) or [Paypal](https://paypal.me/LukeMSmith)! | |||
## Todo | |||
* Expand the list of server information in `domains.csv`, including adding spoolfiles/records/postponed folders for each account. | |||
* Write scripts that do the following: | |||
* Stat `~/.offlineimaprc` and the the mutt configs to see what accounts are currently available. (**Done**, currently in `stat.sh`; needs integration.) | |||
* Delete a profile from above if requested. (**Done**, currently in `removeaccount.sh`; needs integration.) | |||
* Add a profile above if requested, including: | |||
* An automatic search of `domains.csv` for server information. (**Done**) | |||
* An ncurses menu for inputing server settings if not available in `domains.csv`. (Soon, see `manual.sh`) | |||
* Differential actions for Gmail accounts since these are distinct in offlineIMAP. (**Done**) | |||
* Configure notmuch with all accounts. | |||
* A prompt for adding encypted passwords for each account available. | |||
* Or directions for adding plain text passwords if desired. | |||
### Todo: Add settings for email accounts not unified by one domain | |||
-------- | |||
zoho,imap.zoho.com,993.00,smtp.zoho.com,465.00 | |||
icloud,imap.mail.me.com,993.00,smtp.mail.me.com,587.00 | |||
inbox.com,imap.inbox.com,993.00,smtp.inbox.com,465.00 | |||
office365,outlook.office365.com,993.00,smtp.office365.com,587.00 | |||
hostgator,gator4171.hostgator.com,993.00,gator4171.hostgator.com,587.00 | |||
godaddy,imap.secureserver.net,993,smtpout.secureserver.net,465 |
@@ -0,0 +1,88 @@ | |||
ADDRESS,IMAP,imap port,SMTP,smtp port,spoolfile,postponed,record | |||
yahoo.com,imap.mail.yahoo.com,993.00,smtp.mail.yahoo.com,465/587,,, | |||
mail.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
aol.com,imap.aol.com,993.00,smtp.aol.com,465.00,,, | |||
email.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
usa.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
myself.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
consultant.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
post.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
europe.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
asia.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
iname.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
writeme.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
dr.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
engineer.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
cheerful.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
accountant.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
techie.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
linuxmail.org,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
uymail.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
contractor.net,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
accountant.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
activist.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
adexec.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
allergist.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
alumni.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
alumnidirector.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
angelic.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
appraiser.net,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
archaeologist.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
arcticmail.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
artlover.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
asia.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
auctioneer.net,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
bartender.net,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
bikerider.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
birdlover.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
brew-meister.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
cash4u.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
chef.net,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
chemist.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
clerk.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
clubmember.org,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
collector.org,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
columnist.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
comic.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
computer4u.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
consultant.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
contractor.net,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
coolsite.net,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
counsellor.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
cyberservices.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
deliveryman.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
diplomats.com,imap.mail.com,995.00,smtp.mail.com,587.00,INBOX,Drafts,Sent | |||
hostgator,gator4171.hostgator.com,993.00,gator4171.hostgator.com,587.00,INBOX,INBOX.Sent,INBOX.Drafts | |||
teknik.io,mail.teknik.io,993.00,mail.teknik.io,587.00,,, | |||
yandex.com,imap.yandex.com,993.00,smtp.yandex.com,465.00,,, | |||
outlook.com,imap-mail.outlook.com,993.00,smtp-mail.outlook.com,587.00,,, | |||
hotmail.com,imap-mail.outlook.com,993.00,smtp-mail.outlook.com,587.00,,, | |||
gmail.com,imap.google.com,993.00,smtp.gmail.com,587.00,INBOX,[Gmail].Drafts,[Gmail].Sent Mail | |||
cock.li,mail.cock.li,993.00,mail.cock.li,587.00,INBOX,Drafts,Sent | |||
airmail.cc,mail.cock.li,993.00,mail.cock.li,587.00,INBOX,Drafts,Sent | |||
8chan.co,mail.cock.li,993.00,mail.cock.li,587.00,INBOX,Drafts,Sent | |||
redchan.it,mail.cock.li,993.00,mail.cock.li,587.00,INBOX,Drafts,Sent | |||
420blaze.it,mail.cock.li,993.00,mail.cock.li,587.00,INBOX,Drafts,Sent | |||
aaathats3as.com,mail.cock.li,993.00,mail.cock.li,587.00,INBOX,Drafts,Sent | |||
cumallover.me,mail.cock.li,993.00,mail.cock.li,587.00,INBOX,Drafts,Sent | |||
dicksinhisan.us,mail.cock.li,993.00,mail.cock.li,587.00,INBOX,Drafts,Sent | |||
loves.dicksinhisan.us,mail.cock.li,993.00,mail.cock.li,587.00,INBOX,Drafts,Sent | |||
wants.dicksinhisan.us,mail.cock.li,993.00,mail.cock.li,587.00,INBOX,Drafts,Sent | |||
dicksinmyan.us,mail.cock.li,993.00,mail.cock.li,587.00,INBOX,Drafts,Sent | |||
loves.dicksinmyan.us,mail.cock.li,993.00,mail.cock.li,587.00,INBOX,Drafts,Sent | |||
wants.dicksinmyan.us,mail.cock.li,993.00,mail.cock.li,587.00,INBOX,Drafts,Sent | |||
goat.si,mail.cock.li,993.00,mail.cock.li,587.00,INBOX,Drafts,Sent | |||
horsefucker.org,mail.cock.li,993.00,mail.cock.li,587.00,INBOX,Drafts,Sent | |||
national.shitposting.agency,mail.cock.li,993.00,mail.cock.li,587.00,INBOX,Drafts,Sent | |||
nigge.rs,mail.cock.li,993.00,mail.cock.li,587.00,INBOX,Drafts,Sent | |||
tfwno.gf,mail.cock.li,993.00,mail.cock.li,587.00,INBOX,Drafts,Sent | |||
cock.lu,mail.cock.li,993.00,mail.cock.li,587.00,INBOX,Drafts,Sent | |||
cock.email,mail.cock.li,993.00,mail.cock.li,587.00,INBOX,Drafts,Sent | |||
firemail.cc,mail.cock.li,993.00,mail.cock.li,587.00,INBOX,Drafts,Sent | |||
hitler.rocks,mail.cock.li,993.00,mail.cock.li,587.00,INBOX,Drafts,Sent | |||
getbackinthe.kitchen,mail.cock.li,993.00,mail.cock.li,587.00,INBOX,Drafts,Sent | |||
memeware.net,mail.cock.li,993.00,mail.cock.li,587.00,INBOX,Drafts,Sent | |||
cocaine.ninja,mail.cock.li,993.00,mail.cock.li,587.00,INBOX,Drafts,Sent | |||
waifu.club,mail.cock.li,993.00,mail.cock.li,587.00,INBOX,Drafts,Sent | |||
rape.lol,mail.cock.li,993.00,mail.cock.li,587.00,INBOX,Drafts,Sent | |||
nuke.africa,mail.cock.li,993.00,mail.cock.li,587.00,INBOX,Drafts,Sent |
@@ -0,0 +1,26 @@ | |||
# vim: filetype=muttrc | |||
# muttrc file for account $title | |||
set realname = "$realname" | |||
set from = "$fulladdr" | |||
set smtp_url = "smtp://$fulladdr@$smtp:$sport/" | |||
set sendmail = "/usr/bin/msmtp -a $title" | |||
set folder = "~/.mail/$title" | |||
set header_cache = ~/.config/mutt/$title/cache/headers | |||
set message_cachedir = ~/.config/mutt/$title/cache/bodies | |||
set certificate_file = ~/.config/mutt/$title/certificates | |||
source "~/.config/mutt/credentials/getmuttpass $title |" | |||
set spoolfile = "+$spoolfile" | |||
set record = "+$record" | |||
set postponed = "+$postponed" | |||
set mbox_type = Maildir | |||
set ssl_starttls = yes | |||
set ssl_force_tls = yes | |||
bind index,pager g noop | |||
bind index gg first-entry | |||
macro index,pager gi "<change-folder>=$spoolfile<enter>" "Go to inbox" | |||
macro index,pager gs "<change-folder>=$record<enter>" "Go to sent" | |||
macro index,pager gd "<change-folder>=$postponed<enter>" "Go to drafts" |
@@ -0,0 +1,6 @@ | |||
[general] | |||
accounts = | |||
starttls = yes | |||
ssl = yes | |||
pythonfile = ~/.config/mutt/credentials/imappwd.py | |||
@@ -0,0 +1,18 @@ | |||
[Account $title] | |||
localrepository = $title-local | |||
remoterepository = $title-remote | |||
[Repository $title-remote] | |||
type = $type | |||
remoteuser = $fulladdr | |||
sslcacerfile = /etc/ssl/cets/ca-certificates.crt | |||
remotepasseval = mailpasswd("$title") | |||
remotehost = $imap | |||
port = $iport | |||
folderfilter = lambda foldername: foldername not in ['[Gmail]/All Mail'] | |||
sslcacertfile = /etc/ssl/certs/ca-certificates.crt | |||
[Repository $title-local] | |||
type = Maildir | |||
localfolders = ~/.mail/$title |
@@ -0,0 +1,4 @@ | |||
#!/bin/bash | |||
pass=$(gpg -d -q ~/.config/mutt/credentials/$1.gpg) | |||
echo set smtp_pass=\"$pass\" | |||
echo set imap_pass=\"$pass\" |
@@ -0,0 +1,11 @@ | |||
import os.path | |||
import subprocess | |||
home = os.path.expanduser("~") | |||
def mailpasswd(acct): | |||
acct = os.path.basename(acct) | |||
path = "%s/.config/mutt/credentials/%s.gpg" % (home,acct) | |||
args = ["gpg", "--use-agent", "--quiet", "--batch", "-d", path] | |||
try: | |||
return subprocess.check_output(args).strip() | |||
except subprocess.CalledProcessError: | |||
return "" |
@@ -0,0 +1,17 @@ | |||
# The stuff for manually putting in server settings. | |||
# Will be added to main script as option eventually. | |||
remotehost=$(\ | |||
dialog --inputbox "Insert the IMAP server for your email provider (excluding the port number)" 10 60 \ | |||
3>&1 1>&2 2>&3 3>&- \ | |||
) | |||
dialog --inputbox "What is your server's IMAP port number? (Usually 993)" 10 60 | |||
smtpserver=$(\ | |||
dialog --inputbox "Insert the SMTP server for your email provider (excluding the port number)" 10 60 \ | |||
3>&1 1>&2 2>&3 3>&- \ | |||
) | |||
smtpport=$(\ | |||
dialog --inputbox "What is your server's SMTP port number? (Usually 587 or 465)" 10 60 | |||
3>&1 1>&2 2>&3 3>&- \ | |||
) |
@@ -0,0 +1,80 @@ | |||
#!/bin/bash | |||
muttdir="$HOME/Repos/email-mutt-offline/" | |||
mkdir -p ~/.config/mutt/credentials | |||
# Email for GPG | |||
youremail=$(\ | |||
dialog --title "Luke's mutt/offlineIMAP password wizard" --inputbox "Insert the email address with which you originally created your key pair. This is NOT necessarily the email you want to configure." 10 60 \ | |||
3>&1 1>&2 2>&3 3>&- \ | |||
) | |||
# Get email address | |||
fulladdr=$(\ | |||
dialog --title "Luke's mutt/offlineIMAP autoconfig" --inputbox "Insert your full email address." 10 60 \ | |||
3>&1 1>&2 2>&3 3>&- \ | |||
) | |||
# Check to see if domain is in domain list | |||
serverinfo=$(cat autoconf/domains.csv | grep -w ^${fulladdr##*@}) | |||
if [ -z "$serverinfo" ]; then echo No suitable match. && exit; fi | |||
# Read in server data as variables | |||
IFS=, read service imap iport smtp sport spoolfile postponed record <<EOF | |||
$serverinfo | |||
EOF | |||
clear | |||
realname=$(\ | |||
dialog --title "Luke's mutt/offlineIMAP autoconfig" --inputbox "Enter the full name you'd like to be identified by on this email account." 10 60 \ | |||
3>&1 1>&2 2>&3 3>&- \ | |||
) | |||
title=$(\ | |||
dialog --title "Luke's mutt/offlineIMAP autoconfig" --inputbox "Give a short, one-word name for this email account that will differentiate it from other email accounts." 10 60 \ | |||
3>&1 1>&2 2>&3 3>&- \ | |||
) | |||
# Sets the repo type and other variables for the sed regex. | |||
if [[ "$service" == "gmail.com" ]]; | |||
then | |||
type="Gmail" | |||
delet="remotehost" | |||
else | |||
type="IMAP" | |||
delet="Gmail]\/" | |||
fi | |||
# The replacements | |||
replacement=" | |||
s/\$realname/$realname/g; | |||
s/\$title/$title/g; | |||
s/\$fulladdr/$fulladdr/g; | |||
s/\$imap/$imap/g; | |||
s/\$iport/$iport/g; | |||
s/\$smtp/$smtp/g; | |||
s/\$sport/$sport/g; | |||
s/\$spoolfile/$spoolfile/g; | |||
s/\$postponed/$postponed/g; | |||
s/\$record/$record/g; | |||
s/\$type/$type/g; | |||
/$delet/d" | |||
addAccount() { | |||
if [ ! -f ~/.offlineimaprc ]; then cp "$muttdir"autoconf/offlineimap_header ~/.offlineimaprc; fi | |||
cat "$muttdir"autoconf/offlineimap_profile | sed -e "$replacement" >> ~/.offlineimaprc | |||
# Add the mutt profile. | |||
cat "$muttdir"autoconf/mutt_profile | sed -e "$replacement" > "$muttdir"accounts/$title.muttrc | |||
# Add on offlineimaprc sync list. | |||
sed -i "s/^accounts =.*[a-zA-Z]$/&, $title/g;s/^accounts =$/accounts = $title/g" ~/.offlineimaprc ;} | |||
addAccount | |||
dialog --title "Luke's mutt/offlineIMAP password wizard" --passwordbox "Enter the password for the \"$title\" account." 10 60 2> /tmp/$title | |||
gpg -r $youremail --encrypt /tmp/$title | |||
shred -u /tmp/$title && echo "Password encrypted and memory shredded." | |||
mv /tmp/$title.gpg ~/.config/mutt/credentials/ | |||
echo Done lmao. | |||
exit |
@@ -0,0 +1,111 @@ | |||
[general] | |||
accounts = luke, gmail | |||
#accounts = luke, gmail, gkulade, kulade, evenor | |||
starttls = yes | |||
ssl = yes | |||
autorefresh = 1 | |||
pythonfile = ~/.config/mutt/credentials/imappwd.py | |||
####### | |||
[Account gmail] | |||
localrepository = gmail-local | |||
remoterepository = gmail-remote | |||
[Repository gmail-remote] | |||
type = Gmail | |||
remoteuser = luxmyth@gmail.com | |||
remotepasseval = mailpasswd("gmail") | |||
folderfilter = lambda foldername: foldername not in ['[Gmail]/All Mail', '[Gmail]/Chats', '[Gmail].Trash', 'Trump', 'ugaroml', 'SMS'] | |||
#folderfilter = lambda foldername: foldername in ['INBOX', 'lingcircle', "[Gmail].Sent Mail", '[Gmail].Drafts'] | |||
sslcacertfile = /etc/ssl/certs/ca-certificates.crt | |||
[Repository gmail-local] | |||
type = Maildir | |||
localfolders = ~/.Mail/Gmail | |||
####### | |||
[Account luke] | |||
localrepository = luke-local | |||
remoterepository = luke-remote | |||
[Repository luke-remote] | |||
type = IMAP | |||
remoteuser = luke@lukesmith.xyz | |||
remotepasseval = mailpasswd("luke") | |||
remotehost = gator4171.hostgator.com | |||
folderfilter = lambda foldername: foldername in ['INBOX', 'INBOX.Sent', 'INBOX.Drafts'] | |||
sslcacertfile = /etc/ssl/certs/ca-certificates.crt | |||
[Repository luke-local] | |||
type = Maildir | |||
localfolders = ~/.Mail/Luke | |||
[Account kulade] | |||
localrepository = kulade-local | |||
remoterepository = kulade-remote | |||
[Repository kulade-remote] | |||
type = IMAP | |||
remoteuser = kulade@cock.li | |||
remotepasseval = mailpasswd("kulade") | |||
sslcacertfile = /etc/ssl/certs/ca-certificates.crt | |||
remotehost = mail.cock.li | |||
[Repository kulade-local] | |||
type = Maildir | |||
localfolders = ~/.Mail/kulade | |||
####### | |||
[Account gkulade] | |||
localrepository = gkulade-local | |||
remoterepository = gkulade-remote | |||
[Repository gkulade-remote] | |||
type = Gmail | |||
remoteuser = kulade@gmail.com | |||
remotepasseval = mailpasswd("gkulade") | |||
folderfilter = lambda foldername: foldername not in ['[Gmail]/All Mail', 'SMS', 'Call log'] | |||
sslcacertfile = /etc/ssl/certs/ca-certificates.crt | |||
[Repository gkulade-local] | |||
type = Maildir | |||
localfolders = ~/.Mail/gkulade | |||
#[Account arizona] | |||
# | |||
#localrepository = arizona-local | |||
#remoterepository = arizona-remote | |||
# | |||
#[Repository arizona-remote] | |||
#type = IMAP | |||
#remoteuser = lukesmith@email.arizona.edu | |||
#remotehost = mail.catnet.arizona.edu | |||
#port = 993 | |||
##folderfilter = lambda foldername: foldername not in ['[Gmail]/All Mail', '[Gmail]/Chats', '[Gmail].Trash', 'Trump', 'ugaroml', 'SMS'] | |||
#folderfilter = lambda foldername: foldername in ['INBOX', 'lingcircle', '[Gmail].Sent Mail', '[Gmail].Drafts'] | |||
#sslcacertfile = /etc/ssl/certs/ca-certificates.crt | |||
# | |||
#[Repository arizona-local] | |||
#type = Maildir | |||
#localfolders = ~/.Mail/Arizona | |||
[Account evenor] | |||
localrepository = evenor-local | |||
remoterepository = evenor-remote | |||
[Repository evenor-remote] | |||
type = IMAP | |||
remoteuser = evenor@teknik.io | |||
remotepasseval = mailpasswd("evenor") | |||
remotehost = mail.teknik.io | |||
port = 993 | |||
sslcacertfile = /etc/ssl/certs/ca-certificates.crt | |||
[Repository evenor-local] | |||
type = Maildir | |||
localfolders = ~/.Mail/Evenor |
@@ -0,0 +1,20 @@ | |||
#!/bin/sh | |||
muttdir="$HOME/Repos/email-mutt-offline/" | |||
# This script will remove an account from ~/.offlineimaprc and the | |||
# designated location in ~/.config/mutt/accounts. | |||
# Feed the script the title of the account. | |||
title=$1 | |||
removeAccount() { sed -ie " | |||
/Account $title]/,/Account/{//!d} | |||
/Account $title]/d | |||
s/ $title\(,\|$\)//g | |||
s/=$title\(,\|$\)/=/g | |||
s/,$//g | |||
" ~/.offlineimaprc | |||
rm "$muttdir"accounts/$title.muttrc | |||
echo $title deleted. ;} | |||
removeAccount $title |
@@ -0,0 +1,8 @@ | |||
#!/bin/sh | |||
# Gets all accounts used by offlineimaps. | |||
cat ~/.offlineimaprc | grep "^accounts =" | sed -e 's/accounts =\( \)//g;s/\(,\) /\n/g;' | |||
# Another option | |||
# Get current accounts | |||
#accountsline=$(cat ~/.offlineimaprc | grep ^accou | sed 's/,//g') |