Initial commit
This commit is contained in:
commit
8a58bb9264
12
README.md
Normal file
12
README.md
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# MailConfig
|
||||||
|
|
||||||
|
Example config files for managing email on a Linux system.
|
||||||
|
|
||||||
|
Software to install:
|
||||||
|
====================
|
||||||
|
|
||||||
|
- Mutt as a mail client.
|
||||||
|
- OfflineImap and Getmail to retrieve mail on disk.
|
||||||
|
- Msmtp to send mail.
|
||||||
|
- abook for managing addresses.
|
||||||
|
- gpg for password storage and mail encryption.
|
15
getmail/getmailrc
Normal file
15
getmail/getmailrc
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[retriever]
|
||||||
|
type = SimplePOP3SSLRetriever
|
||||||
|
server = pop.example.com
|
||||||
|
username = username@example.com
|
||||||
|
|
||||||
|
# passwd.gpg contains the password.
|
||||||
|
password_command = ("/usr/bin/gpg","-dq","/home/myuser/.getmail/passwd.gpg")
|
||||||
|
port = 995
|
||||||
|
|
||||||
|
[destination]
|
||||||
|
type = Maildir
|
||||||
|
path = ~/mail/
|
||||||
|
|
||||||
|
[options]
|
||||||
|
read_all = False
|
27
msmtprc
Normal file
27
msmtprc
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
# Set default values for all following accounts.
|
||||||
|
defaults
|
||||||
|
auth on
|
||||||
|
tls on
|
||||||
|
tls_trust_file /etc/ssl/certs/ca-certificates.crt
|
||||||
|
logfile ~/.msmtp.log
|
||||||
|
|
||||||
|
# first example
|
||||||
|
account example
|
||||||
|
host smtp.example.com
|
||||||
|
port 465
|
||||||
|
from myuser@example.com
|
||||||
|
user myuser
|
||||||
|
# passwd.gpg contains the password for the first account.
|
||||||
|
passwordeval "gpg -dq ~/.getmail/passwd.gpg"
|
||||||
|
tls_starttls off
|
||||||
|
|
||||||
|
# Gmail
|
||||||
|
account gmail
|
||||||
|
host smtp.gmail.com
|
||||||
|
port 587
|
||||||
|
from gmailuser@gmail.com
|
||||||
|
user gmailuser
|
||||||
|
passwordeval "gpg -dq ~/.offlineimappass.gpg"
|
||||||
|
|
||||||
|
# Set a default account
|
||||||
|
account default : myuser
|
23
mutt/colors.linux
Normal file
23
mutt/colors.linux
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# -*-muttrc-*-
|
||||||
|
|
||||||
|
# Palette for use with the Linux console. Black background.
|
||||||
|
|
||||||
|
color hdrdefault brightblue black
|
||||||
|
color quoted brightblack black
|
||||||
|
color signature brightblue black
|
||||||
|
color attachment red black
|
||||||
|
color prompt brightmagenta black
|
||||||
|
color message brightblue black
|
||||||
|
color error brightred black
|
||||||
|
color indicator black brightblue
|
||||||
|
color status white brightblack
|
||||||
|
color tree white black
|
||||||
|
color normal white black
|
||||||
|
color markers brightblue black
|
||||||
|
color search white black
|
||||||
|
color tilde brightmagenta black
|
||||||
|
color index blue black ~F
|
||||||
|
color index brightblue black "~N|~O"
|
||||||
|
|
||||||
|
# color body brightwhite black '\*+[^*]+\*+'
|
||||||
|
# color body brightwhite black '_+[^_]+_+'
|
15
mutt/gmail
Normal file
15
mutt/gmail
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
## Receive options.
|
||||||
|
source "~/.mutt/mailboxes"
|
||||||
|
set mbox_type=Maildir
|
||||||
|
set folder=~/ImapMail/gmail
|
||||||
|
set spoolfile="+INBOX"
|
||||||
|
set header_cache=~/.cache/mutt
|
||||||
|
set record = +Sent\ Items
|
||||||
|
set postponed = "+/Drafts"
|
||||||
|
|
||||||
|
## Send options.
|
||||||
|
set sendmail="/usr/bin/msmtp"
|
||||||
|
set use_from=yes
|
||||||
|
set realname="Real Name"
|
||||||
|
set from=gmailuser@gmail.com
|
||||||
|
set envelope_from=yes
|
110
mutt/gpg.rc
Normal file
110
mutt/gpg.rc
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
# -*-muttrc-*-
|
||||||
|
#
|
||||||
|
# Command formats for gpg.
|
||||||
|
#
|
||||||
|
# Some of the older commented-out versions of the commands use gpg-2comp from:
|
||||||
|
# http://70t.de/download/gpg-2comp.tar.gz
|
||||||
|
#
|
||||||
|
# %p The empty string when no passphrase is needed,
|
||||||
|
# the string "PGPPASSFD=0" if one is needed.
|
||||||
|
#
|
||||||
|
# This is mostly used in conditional % sequences.
|
||||||
|
#
|
||||||
|
# %f Most PGP commands operate on a single file or a file
|
||||||
|
# containing a message. %f expands to this file's name.
|
||||||
|
#
|
||||||
|
# %s When verifying signatures, there is another temporary file
|
||||||
|
# containing the detached signature. %s expands to this
|
||||||
|
# file's name.
|
||||||
|
#
|
||||||
|
# %a In "signing" contexts, this expands to the value of the
|
||||||
|
# configuration variable $pgp_sign_as, if set, otherwise
|
||||||
|
# $pgp_default_key. You probably need to
|
||||||
|
# use this within a conditional % sequence.
|
||||||
|
#
|
||||||
|
# %r In many contexts, mutt passes key IDs to pgp. %r expands to
|
||||||
|
# a list of key IDs.
|
||||||
|
|
||||||
|
|
||||||
|
# Section A: Key Management
|
||||||
|
|
||||||
|
# The default key for encryption (used by $pgp_self_encrypt and
|
||||||
|
# $postpone_encrypt).
|
||||||
|
#
|
||||||
|
# It will also be used for signing unless $pgp_sign_as is set to a
|
||||||
|
# key.
|
||||||
|
#
|
||||||
|
# Unless your key does not have encryption capability, uncomment this
|
||||||
|
# line and replace the keyid with your own.
|
||||||
|
#
|
||||||
|
# set pgp_default_key="0x12345678"
|
||||||
|
|
||||||
|
# If you have a separate signing key, or your key _only_ has signing
|
||||||
|
# capability, uncomment this line and replace the keyid with your
|
||||||
|
# signing keyid.
|
||||||
|
#
|
||||||
|
# set pgp_sign_as="0x87654321"
|
||||||
|
|
||||||
|
|
||||||
|
# Section B: Commands
|
||||||
|
|
||||||
|
# Note that we explicitly set the comment armor header since GnuPG, when used
|
||||||
|
# in some localiaztion environments, generates 8bit data in that header, thereby
|
||||||
|
# breaking PGP/MIME.
|
||||||
|
|
||||||
|
# decode application/pgp
|
||||||
|
set pgp_decode_command="gpg --status-fd=2 %?p?--passphrase-fd 0? --no-verbose --quiet --batch --output - %f"
|
||||||
|
|
||||||
|
# verify a pgp/mime signature
|
||||||
|
set pgp_verify_command="gpg --status-fd=2 --no-verbose --quiet --batch --output - --verify %s %f"
|
||||||
|
|
||||||
|
# decrypt a pgp/mime attachment
|
||||||
|
set pgp_decrypt_command="gpg --status-fd=2 %?p?--passphrase-fd 0? --no-verbose --quiet --batch --output - %f"
|
||||||
|
|
||||||
|
# create a pgp/mime signed attachment
|
||||||
|
# set pgp_sign_command="gpg-2comp --comment '' --no-verbose --batch --output - %?p?--passphrase-fd 0? --armor --detach-sign --textmode %?a?-u %a? %f"
|
||||||
|
set pgp_sign_command="gpg --no-verbose --batch --quiet --output - %?p?--passphrase-fd 0? --armor --detach-sign --textmode %?a?-u %a? %f"
|
||||||
|
|
||||||
|
# create a application/pgp signed (old-style) message
|
||||||
|
# set pgp_clearsign_command="gpg-2comp --comment '' --no-verbose --batch --output - %?p?--passphrase-fd 0? --armor --textmode --clearsign %?a?-u %a? %f"
|
||||||
|
set pgp_clearsign_command="gpg --no-verbose --batch --quiet --output - %?p?--passphrase-fd 0? --armor --textmode --clearsign %?a?-u %a? %f"
|
||||||
|
|
||||||
|
# create a pgp/mime encrypted attachment
|
||||||
|
# set pgp_encrypt_only_command="pgpewrap gpg-2comp -v --batch --output - --encrypt --textmode --armor --always-trust -- -r %r -- %f"
|
||||||
|
set pgp_encrypt_only_command="pgpewrap gpg --batch --quiet --no-verbose --output - --encrypt --textmode --armor --always-trust -- -r %r -- %f"
|
||||||
|
|
||||||
|
# create a pgp/mime encrypted and signed attachment
|
||||||
|
# set pgp_encrypt_sign_command="pgpewrap gpg-2comp %?p?--passphrase-fd 0? -v --batch --output - --encrypt --sign %?a?-u %a? --armor --always-trust -- -r %r -- %f"
|
||||||
|
set pgp_encrypt_sign_command="pgpewrap gpg %?p?--passphrase-fd 0? --batch --quiet --no-verbose --textmode --output - --encrypt --sign %?a?-u %a? --armor --always-trust -- -r %r -- %f"
|
||||||
|
|
||||||
|
# import a key into the public key ring
|
||||||
|
set pgp_import_command="gpg --no-verbose --import %f"
|
||||||
|
|
||||||
|
# export a key from the public key ring
|
||||||
|
set pgp_export_command="gpg --no-verbose --export --armor %r"
|
||||||
|
|
||||||
|
# verify a key
|
||||||
|
set pgp_verify_key_command="gpg --verbose --batch --fingerprint --check-sigs %r"
|
||||||
|
|
||||||
|
# read in the public key ring
|
||||||
|
set pgp_list_pubring_command="gpg --no-verbose --batch --quiet --with-colons --with-fingerprint --with-fingerprint --list-keys %r"
|
||||||
|
|
||||||
|
# read in the secret key ring
|
||||||
|
set pgp_list_secring_command="gpg --no-verbose --batch --quiet --with-colons --with-fingerprint --with-fingerprint --list-secret-keys %r"
|
||||||
|
|
||||||
|
# fetch keys
|
||||||
|
# set pgp_getkeys_command="pkspxycwrap %r"
|
||||||
|
|
||||||
|
# pattern for good signature - may need to be adapted to locale!
|
||||||
|
|
||||||
|
# set pgp_good_sign="^gpgv?: Good signature from "
|
||||||
|
|
||||||
|
# OK, here's a version which uses gnupg's message catalog:
|
||||||
|
# set pgp_good_sign="`gettext -d gnupg -s 'Good signature from "' | tr -d '"'`"
|
||||||
|
|
||||||
|
# This version uses --status-fd messages
|
||||||
|
set pgp_good_sign="^\\[GNUPG:\\] GOODSIG"
|
||||||
|
|
||||||
|
# pattern to verify a decryption occurred
|
||||||
|
set pgp_decryption_okay="^\\[GNUPG:\\] DECRYPTION_OKAY"
|
||||||
|
|
10
mutt/mailcap
Normal file
10
mutt/mailcap
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
text/html; lynx -assume_charset=%{charset} -display_charset=utf-8 -dump %s; nametemplate=%s.html; copiousoutput
|
||||||
|
application/pdf; mupdf %s &>/dev/null
|
||||||
|
image/JPG; feh -F -Z %s &>/dev/null
|
||||||
|
image/jpeg; feh -F -Z %s &>/dev/null
|
||||||
|
image/gif; feh -F -Z %s &>/dev/null
|
||||||
|
image/png; feh -F -Z %s &>/dev/null
|
||||||
|
application/vnd.oasis.opendocument.text; libreoffice %s &>/dev/null
|
||||||
|
application/vnd.ms-excel; libreoffice %s &>/dev/null
|
||||||
|
application/vnd.oasis.opendocument.spreadsheet; libreoffice %s &>/dev/null
|
||||||
|
application/msword; libreoffice %s &>/dev/null
|
15
mutt/perso
Normal file
15
mutt/perso
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#my_pop_pass
|
||||||
|
set mbox_type=Maildir
|
||||||
|
set folder=~/mail
|
||||||
|
set spoolfile=+/
|
||||||
|
set header_cache=~/.cache/mutt
|
||||||
|
set record = ~/sent
|
||||||
|
set my_user=myuser
|
||||||
|
|
||||||
|
set realname = 'Real Name'
|
||||||
|
|
||||||
|
## Send options.
|
||||||
|
set sendmail="/usr/bin/msmtp"
|
||||||
|
set use_from=yes
|
||||||
|
set from=myuser@example.com
|
||||||
|
set envelope_from=yes
|
68
muttrc
Normal file
68
muttrc
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
#Editor:
|
||||||
|
set editor=`echo \$EDITOR`
|
||||||
|
|
||||||
|
#vim keybinding
|
||||||
|
bind pager j next-line
|
||||||
|
bind pager k previous-line
|
||||||
|
bind attach,index,pager \CD next-page
|
||||||
|
bind attach,index,pager \CU previous-page
|
||||||
|
bind pager g top
|
||||||
|
bind pager G bottom
|
||||||
|
bind attach,index g first-entry
|
||||||
|
bind attach,index G last-entry
|
||||||
|
|
||||||
|
#mailcap
|
||||||
|
set mailcap_path = ~/.mutt/mailcap
|
||||||
|
auto_view text/html
|
||||||
|
|
||||||
|
#encryption
|
||||||
|
source ~/.mutt/gpg.rc
|
||||||
|
|
||||||
|
# Allow Mutt to open a new IMAP connection automatically.
|
||||||
|
unset imap_passive
|
||||||
|
|
||||||
|
# Keep the IMAP connection alive by polling intermittently (time in seconds).
|
||||||
|
set imap_keepalive = 300
|
||||||
|
|
||||||
|
# How often to check for new mail (time in seconds).
|
||||||
|
set mail_check = 60
|
||||||
|
|
||||||
|
|
||||||
|
set header_cache = "~/.cache/mutt"
|
||||||
|
set imap_check_subscribed
|
||||||
|
|
||||||
|
## gmail
|
||||||
|
source "~/.mutt/gmail"
|
||||||
|
folder-hook *gmailuser@gmail.com/ 'source ~/.mutt/gmail'
|
||||||
|
|
||||||
|
## perso
|
||||||
|
source "~/.mutt/perso"
|
||||||
|
# Here we use the $folder variable that has just been set in the sourced file.
|
||||||
|
# We must set it right now otherwise the 'folder' variable will change in the next sourced file.
|
||||||
|
folder-hook $folder 'source ~/.mutt/perso'
|
||||||
|
|
||||||
|
|
||||||
|
macro index,pager <f2> '<sync-mailbox><enter-command>source ~/.mutt/perso<enter><change-folder>!<enter>'
|
||||||
|
macro index,pager <f3> '<sync-mailbox><enter-command>source ~/.mutt/gmail<enter><change-folder>!<enter>'
|
||||||
|
|
||||||
|
#colors
|
||||||
|
source ~/.mutt/colors.linux
|
||||||
|
|
||||||
|
#automate change directory
|
||||||
|
macro index 'c' '<change-folder>?<change-dir><home>^K=<enter>'
|
||||||
|
|
||||||
|
macro index \cb "\
|
||||||
|
:set my_tmp_pipe_decode=\$pipe_decode\n\
|
||||||
|
:set pipe_decode\n\
|
||||||
|
|urlview\n\
|
||||||
|
:set pipe_decode=\$my_tmp_pipe_decode\n\
|
||||||
|
:unset my_tmp_pipe_decode\n" \
|
||||||
|
'call urlview to extract URLs out of a message'
|
||||||
|
|
||||||
|
#contact management with abook
|
||||||
|
set query_command= "abook --mutt-query '%s'"
|
||||||
|
macro index,pager a "<pipe-message>abook --add-email-quiet<return>" "Add this sender to Abook"
|
||||||
|
bind editor <Tab> complete-query
|
||||||
|
|
||||||
|
#speed up folders switch
|
||||||
|
set sleep_time = 0
|
5
offlineimap.py
Normal file
5
offlineimap.py
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#! /usr/bin/env python2
|
||||||
|
from subprocess import check_output
|
||||||
|
|
||||||
|
def get_pass():
|
||||||
|
return check_output("gpg -dq ~/.offlineimappass.gpg", shell=True).strip("\n")
|
39
offlineimaprc
Normal file
39
offlineimaprc
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
# Sample minimal config file. Copy this to ~/.offlineimaprc and edit to
|
||||||
|
# get started fast.
|
||||||
|
|
||||||
|
[general]
|
||||||
|
accounts = mygmail
|
||||||
|
# Path to file with arbitrary Python code to be loaded
|
||||||
|
pythonfile = ~/.offlineimap.py
|
||||||
|
# Controls how many accounts may be synced simultaneously
|
||||||
|
maxsyncaccounts = 1
|
||||||
|
|
||||||
|
[Account mygmail]
|
||||||
|
localrepository = mygmailLocal
|
||||||
|
remoterepository = mygmailRemote
|
||||||
|
autorefresh = 0.5
|
||||||
|
# Quick-syncs do not update if the only changes were to IMAP flags.
|
||||||
|
# autorefresh=0.5 together with quick=10 yields
|
||||||
|
# 10 quick refreshes between each full refresh, with 0.5 minutes between every
|
||||||
|
# refresh, regardless of type.
|
||||||
|
quick = 10
|
||||||
|
|
||||||
|
[Repository mygmailLocal]
|
||||||
|
type = GmailMaildir
|
||||||
|
localfolders = ~/ImapMail/mygmail
|
||||||
|
|
||||||
|
[Repository mygmailRemote]
|
||||||
|
type = Gmail
|
||||||
|
remoteuser = gmailuser@gmail.com
|
||||||
|
remotepasseval = get_pass()
|
||||||
|
# Necessary as of OfflineIMAP 6.5.4
|
||||||
|
sslcacertfile = /etc/ssl/certs/ca-certificates.crt
|
||||||
|
|
||||||
|
# Generate config file for mutt
|
||||||
|
[mbnames]
|
||||||
|
enabled = yes
|
||||||
|
filename = ~/.mutt/mailboxes
|
||||||
|
header = "mailboxes "
|
||||||
|
peritem = "+%(accountname)s/%(foldername)s"
|
||||||
|
sep = " "
|
||||||
|
footer = "\n"
|
Loading…
Reference in New Issue
Block a user