Initial commit

This commit is contained in:
Artlef 2018-06-30 13:56:53 +00:00 committed by artlef
commit 8a58bb9264
11 changed files with 339 additions and 0 deletions

12
README.md Normal file
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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"