initial commit
This commit is contained in:
		
							
								
								
									
										38
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							@@ -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
 | 
				
			||||||
							
								
								
									
										88
									
								
								autoconf/domains.csv
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										88
									
								
								autoconf/domains.csv
									
									
									
									
									
										Normal file
									
								
							@@ -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
 | 
				
			||||||
		
		
			
  | 
							
								
								
									
										26
									
								
								autoconf/mutt_profile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								autoconf/mutt_profile
									
									
									
									
									
										Normal file
									
								
							@@ -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"
 | 
				
			||||||
							
								
								
									
										6
									
								
								autoconf/offlineimap_header
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								autoconf/offlineimap_header
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					[general]
 | 
				
			||||||
 | 
					accounts =
 | 
				
			||||||
 | 
					starttls = yes
 | 
				
			||||||
 | 
					ssl = yes
 | 
				
			||||||
 | 
					pythonfile = ~/.config/mutt/credentials/imappwd.py
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										18
									
								
								autoconf/offlineimap_profile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								autoconf/offlineimap_profile
									
									
									
									
									
										Normal file
									
								
							@@ -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
 | 
				
			||||||
							
								
								
									
										4
									
								
								credentials/getmuttpass
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										4
									
								
								credentials/getmuttpass
									
									
									
									
									
										Executable file
									
								
							@@ -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\"
 | 
				
			||||||
							
								
								
									
										11
									
								
								credentials/imappwd.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										11
									
								
								credentials/imappwd.py
									
									
									
									
									
										Executable file
									
								
							@@ -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 ""
 | 
				
			||||||
							
								
								
									
										17
									
								
								manual.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								manual.sh
									
									
									
									
									
										Normal file
									
								
							@@ -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>&- \
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
							
								
								
									
										80
									
								
								mutt_install.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										80
									
								
								mutt_install.sh
									
									
									
									
									
										Executable file
									
								
							@@ -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
 | 
				
			||||||
							
								
								
									
										111
									
								
								offlineimap
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								offlineimap
									
									
									
									
									
										Normal file
									
								
							@@ -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
 | 
				
			||||||
							
								
								
									
										20
									
								
								removeaccount.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										20
									
								
								removeaccount.sh
									
									
									
									
									
										Executable file
									
								
							@@ -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
 | 
				
			||||||
		Reference in New Issue
	
	Block a user