957 lines
32 KiB
Org Mode
957 lines
32 KiB
Org Mode
#+TITLE: Mail Configuration
|
|
|
|
* Synchronize Mailboxes - Mbsync
|
|
:PROPERTIES:
|
|
:header-args:conf: :tangle ~/.mbsyncrc
|
|
:header-args:conf+: :comments both :mkdirp yes
|
|
:END:
|
|
http://isync.sourceforge.net/
|
|
|
|
** Global Defaults
|
|
#+BEGIN_SRC conf
|
|
# Automatically create missing mailboxes, both locally and on the server
|
|
Create Both
|
|
# Save the synchronization state files in the relevant directory
|
|
SyncState *
|
|
# Permanently remove all messages [on the Master/Slave] marked for deletion.
|
|
Expunge Both
|
|
#+END_SRC
|
|
|
|
** Gmail Account
|
|
#+BEGIN_SRC conf
|
|
IMAPAccount gmail
|
|
Host imap.gmail.com
|
|
User dehaeze.thomas@gmail.com
|
|
PassCmd "pass email/dehaeze.thomas@gmail.com"
|
|
SSLType IMAPS
|
|
AuthMechs LOGIN
|
|
CertificateFile /etc/ssl/certs/ca-certificates.crt
|
|
#+END_SRC
|
|
|
|
#+BEGIN_SRC conf
|
|
IMAPStore gmail-remote
|
|
Account gmail
|
|
|
|
MaildirStore gmail-local
|
|
Path ~/.mail/gmail/
|
|
Inbox ~/.mail/gmail/Inbox
|
|
|
|
Channel gmail-Home
|
|
Master :gmail-remote:"INBOX"
|
|
Slave :gmail-local:Inbox
|
|
|
|
Channel gmail-Drafts
|
|
Master :gmail-remote:"[Gmail]/Drafts"
|
|
Slave :gmail-local:Drafts
|
|
|
|
Channel gmail-Sent
|
|
Master :gmail-remote:"[Gmail]/Sent Mail"
|
|
Slave :gmail-local:Sent
|
|
|
|
Channel gmail-Trash
|
|
Master :gmail-remote:"[Gmail]/Trash"
|
|
Slave :gmail-local:Trash
|
|
|
|
Channel gmail-All
|
|
Master :gmail-remote:"[Gmail]/All Mail"
|
|
Slave :gmail-local:Archive
|
|
#+END_SRC
|
|
|
|
#+BEGIN_SRC conf
|
|
# Catch-all for everything else: note that the `Patterns` have to exclude both
|
|
# the remote and local names for all the folders we want to exclude (except
|
|
# "INBOX", which is special-cased, it would seem).
|
|
Channel gmail
|
|
Master :gmail-remote:
|
|
Slave :gmail-local:
|
|
# Exclude everything under the internal [Gmail] folder, except the interesting folders
|
|
Patterns *
|
|
Patterns !INBOX
|
|
Patterns ![Gmail]*
|
|
Patterns !Archive
|
|
Patterns !Drafts
|
|
Patterns !Sent Mail
|
|
Patterns !Trash
|
|
Patterns !Spam
|
|
Patterns !Starred
|
|
#+END_SRC
|
|
|
|
#+BEGIN_SRC conf
|
|
# For doing a quick sync of just the INBOX with `mbsync gmail-download`.
|
|
Channel gmail-download
|
|
Master :gmail-remote:"INBOX"
|
|
Slave :gmail-local:Inbox
|
|
Create Slave
|
|
Expunge Slave
|
|
Sync Pull
|
|
#+END_SRC
|
|
|
|
** ESRF Account
|
|
#+BEGIN_SRC conf
|
|
IMAPAccount esrf
|
|
Host imaps.esrf.fr
|
|
User dehaeze
|
|
PassCmd "pass email/thomas.dehaeze@esrf.fr"
|
|
SSLType IMAPS
|
|
AuthMechs LOGIN
|
|
#+END_SRC
|
|
|
|
#+BEGIN_SRC conf
|
|
IMAPStore esrf-remote
|
|
Account esrf
|
|
|
|
MaildirStore esrf-local
|
|
Path ~/.mail/esrf/
|
|
Inbox ~/.mail/esrf/Inbox
|
|
|
|
Channel esrf-Home
|
|
Master :esrf-remote:"Inbox"
|
|
Slave :esrf-local:Inbox
|
|
|
|
Channel esrf-Drafts
|
|
Master :esrf-remote:"Drafts"
|
|
Slave :esrf-local:Drafts
|
|
|
|
Channel esrf-Archive
|
|
Master :esrf-remote:"Archive"
|
|
Slave :esrf-local:Archive
|
|
|
|
Channel esrf-Sent
|
|
Master :esrf-remote:"Sent"
|
|
Slave :esrf-local:Sent
|
|
|
|
Channel esrf-Trash
|
|
Master :esrf-remote:"Trash"
|
|
Slave :esrf-local:Trash
|
|
#+END_SRC
|
|
|
|
#+BEGIN_SRC conf
|
|
Channel esrf
|
|
Master :esrf-remote:
|
|
Slave :esrf-local:
|
|
#+END_SRC
|
|
|
|
For doing a quick sync of just the INBOX with `mbsync esrf-download`.
|
|
#+BEGIN_SRC conf
|
|
Channel esrf-download
|
|
Master :esrf-remote:"INBOX"
|
|
Slave :esrf-local:Inbox
|
|
Create Slave
|
|
Expunge Slave
|
|
Sync Pull
|
|
#+END_SRC
|
|
|
|
** ULG Account
|
|
#+BEGIN_SRC conf
|
|
IMAPAccount ulg
|
|
Host mail.ulg.ac.be
|
|
User thomas.dehaeze@doct.uliege.be
|
|
PassCmd "pass email/thomas.dehaeze@doct.uliege.be"
|
|
SSLType IMAPS
|
|
AuthMechs LOGIN
|
|
#+END_SRC
|
|
|
|
#+BEGIN_SRC conf
|
|
IMAPStore ulg-remote
|
|
Account ulg
|
|
|
|
MaildirStore ulg-local
|
|
Path ~/.mail/ulg/
|
|
Inbox ~/.mail/ulg/Inbox
|
|
|
|
Channel ulg-Home
|
|
Master :ulg-remote:"Inbox"
|
|
Slave :ulg-local:Inbox
|
|
|
|
Channel ulg-Drafts
|
|
Master :ulg-remote:"Drafts"
|
|
Slave :ulg-local:Drafts
|
|
|
|
Channel ulg-Archive
|
|
Master :ulg-remote:"Archive"
|
|
Slave :ulg-local:Archive
|
|
|
|
Channel ulg-Sent
|
|
Master :ulg-remote:"Sent"
|
|
Slave :ulg-local:Sent
|
|
|
|
Channel ulg-Trash
|
|
Master :ulg-remote:"Trash"
|
|
Slave :ulg-local:Trash
|
|
#+END_SRC
|
|
|
|
#+BEGIN_SRC conf
|
|
Channel ulg
|
|
Master :ulg-remote:
|
|
Slave :ulg-local:
|
|
#+END_SRC
|
|
|
|
For doing a quick sync of just the INBOX with `mbsync ulg-download`.
|
|
#+BEGIN_SRC conf
|
|
Channel ulg-download
|
|
Master :ulg-remote:"Inbox"
|
|
Slave :ulg-local:Inbox
|
|
Create Slave
|
|
Expunge Slave
|
|
Sync Pull
|
|
#+END_SRC
|
|
|
|
* Send Mails - Msmtp
|
|
:PROPERTIES:
|
|
:header-args:conf: :tangle ~/.msmtprc
|
|
:header-args:conf+: :comments both :mkdirp yes
|
|
:END:
|
|
https://marlam.de/msmtp/
|
|
|
|
** Defaults
|
|
#+BEGIN_SRC conf
|
|
defaults
|
|
auth on
|
|
tls on
|
|
tls_certcheck off
|
|
#+END_SRC
|
|
|
|
** Gmail Account
|
|
#+BEGIN_SRC conf
|
|
account gmail
|
|
host smtp.gmail.com
|
|
port 587
|
|
protocol smtp
|
|
from dehaeze.thomas@gmail.com
|
|
user dehaeze.thomas@gmail.com
|
|
passwordeval "pass email/dehaeze.thomas@gmail.com"
|
|
#+END_SRC
|
|
|
|
** ESRF Account
|
|
#+BEGIN_SRC conf
|
|
account esrf
|
|
host smtps.esrf.fr
|
|
port 465
|
|
protocol smtp
|
|
from thomas.dehaeze@esrf.fr
|
|
user dehaeze
|
|
tls_starttls off
|
|
passwordeval "pass email/thomas.dehaeze@esrf.fr"
|
|
#+END_SRC
|
|
|
|
** ULG Account
|
|
#+BEGIN_SRC conf
|
|
account ulg
|
|
host smtp.ulg.ac.be
|
|
port 587
|
|
protocol smtp
|
|
from thomas.dehaeze@doct.uliege.be
|
|
user s177313
|
|
tls_starttls on
|
|
passwordeval "pass email/thomas.dehaeze@doct.uliege.be"
|
|
#+END_SRC
|
|
|
|
** Default Account
|
|
#+BEGIN_SRC conf
|
|
account default : gmail
|
|
#+END_SRC
|
|
|
|
* TODO Mail Indexer - Mu
|
|
http://www.djcbsoftware.nl/code/mu/
|
|
|
|
** Cheatsheet
|
|
http://www.djcbsoftware.nl/code/mu/cheatsheet.html
|
|
|
|
* Mail Client - NeoMutt
|
|
:PROPERTIES:
|
|
:header-args:conf: :tangle ~/.config/neomutt/neomuttrc
|
|
:header-args:conf+: :comments both :mkdirp yes
|
|
:END:
|
|
https://neomutt.org/
|
|
|
|
Documentation:
|
|
#+begin_src bash :results none :exports code
|
|
man neomutt
|
|
man neomuttrc
|
|
#+end_src
|
|
|
|
** Bindings
|
|
*** TODO Vim Bindings
|
|
Unding toutes les touches (https://github.com/iagox86/mutt/blob/master/keybindings.conf) et rebind tout pour faire un truc coherent et documenté
|
|
Rajouter les keybindings de vim https://github.com/neomutt/neomutt/issues/56#issuecomment-250780838
|
|
|
|
*** Unbind Few keys
|
|
#+BEGIN_SRC conf
|
|
bind index,pager i noop
|
|
bind index,pager g noop
|
|
bind index,pager \# noop
|
|
bind index \Cf noop
|
|
#+END_SRC
|
|
|
|
*** Index and Pager
|
|
#+BEGIN_SRC conf
|
|
bind index,pager R group-reply
|
|
bind index,pager s sync-mailbox
|
|
#+END_SRC
|
|
|
|
*** Navigation
|
|
#+BEGIN_SRC conf
|
|
bind index <space> collapse-thread
|
|
|
|
bind index k previous-entry
|
|
bind pager k previous-line
|
|
bind index j next-entry
|
|
bind pager j next-line
|
|
bind index l display-message
|
|
bind index gg first-entry
|
|
bind pager gg top
|
|
bind index G last-entry
|
|
bind pager G bottom
|
|
|
|
bind attach,index,pager \CD next-page
|
|
bind attach,index,pager \CU previous-page
|
|
|
|
bind index h noop
|
|
bind pager h exit
|
|
#+END_SRC
|
|
|
|
*** Index
|
|
#+BEGIN_SRC conf
|
|
bind index u undelete-message
|
|
|
|
bind index,pager P print-message
|
|
|
|
bind index,pager p recall-message
|
|
bind index,pager N search-opposite
|
|
|
|
macro index \Cr "T~U<enter><tag-prefix><clear-flag>N<untag-pattern>.<enter>" "mark all messages as read"
|
|
macro index,pager \cw "\
|
|
: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'
|
|
|
|
#+END_SRC
|
|
|
|
*** Sync email
|
|
#+BEGIN_SRC conf
|
|
macro index,pager o "<shell-escape>$HOME/.config/neomutt/bin/get_new_mail.sh<enter>"
|
|
macro index,pager O "<shell-escape>$HOME/.config/neomutt/bin/get_new_mail.sh all<enter>"
|
|
#+END_SRC
|
|
|
|
**** Sync Mail script
|
|
:PROPERTIES:
|
|
:header-args: :tangle ~/.config/neomutt/bin/get_new_mail.sh
|
|
:header-args+: :comments both :mkdirp yes
|
|
:header-args+: :shebang "#!/usr/bin/env bash"
|
|
:END:
|
|
#+begin_src bash
|
|
if [ "$1" = "all" ]; then
|
|
command='mbsync --all'
|
|
else
|
|
command='mbsync gmail-Home esrf-Home ulg-Home'
|
|
fi
|
|
|
|
if [ $TMUX ]; then
|
|
tmux split -v -l 1 $command && tmux select-pane -U
|
|
else
|
|
$command
|
|
fi
|
|
#+end_src
|
|
|
|
*** Copy and move dialogs
|
|
#+BEGIN_SRC conf
|
|
macro index C "<copy-message>?<toggle-mailboxes>" "copy a message to a mailbox"
|
|
macro index M "<save-message>?<toggle-mailboxes>" "move a message to a mailbox"
|
|
#+END_SRC
|
|
|
|
*** Quickly change mailboxes
|
|
#+BEGIN_SRC conf
|
|
macro index,pager c "<change-folder>?<toggle-mailboxes>" "change folder"
|
|
#+END_SRC
|
|
|
|
*** TODO Labels
|
|
#+BEGIN_SRC conf
|
|
bind index,pager y edit-label
|
|
#+END_SRC
|
|
|
|
*** Open in Vim
|
|
#+BEGIN_SRC conf
|
|
bind index,pager V noop
|
|
macro index,pager V "|nvim -c 'setlocal ft=mail' -c 'setlocal buftype=nofile' -<enter>" "open in vim"
|
|
#+END_SRC
|
|
|
|
*** Make quick html view macro
|
|
#+BEGIN_SRC conf
|
|
bind index,pager H noop # Unbinds V from version
|
|
macro index,pager H "<view-attachments><search>html<enter><view-mailcap><exit>"
|
|
#+END_SRC
|
|
|
|
*** Mouse wheel
|
|
#+BEGIN_SRC conf
|
|
bind pager \031 previous-line # Mouse wheel
|
|
bind pager \005 next-line # Mouse wheel
|
|
#+END_SRC
|
|
|
|
*** TODO Contacts
|
|
#+BEGIN_SRC conf
|
|
macro pager \Ca "<pipe-message> goobook add<return>" "add the sender address to Google contacts"
|
|
#+END_SRC
|
|
|
|
*** Compose
|
|
#+BEGIN_SRC conf
|
|
bind compose p postpone-message
|
|
|
|
macro attach,compose \cw "\
|
|
: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'
|
|
|
|
bind compose R rename-attachment
|
|
|
|
bind compose a attach-file
|
|
#+END_SRC
|
|
|
|
**** TODO - Write html emails using markdown
|
|
#+BEGIN_SRC conf
|
|
# macro compose M "F pandoc -s -f markdown -t html \ny^T^Utext/html; charset=us-ascii\n"
|
|
#+END_SRC
|
|
|
|
**** TODO Open another instance of neomutt in readonly mode while composing
|
|
#+BEGIN_SRC conf
|
|
macro compose M "<shell-escape>termite -e \"neomutt -R\"<enter>"
|
|
#+END_SRC
|
|
|
|
*** TODO Sidebar
|
|
#+BEGIN_SRC conf
|
|
bind index,pager \Ck sidebar-prev
|
|
bind index,pager \Cj sidebar-next
|
|
bind index,pager \Co sidebar-open
|
|
bind index,pager \Cp sidebar-prev-new
|
|
bind index,pager \Cn sidebar-next-new
|
|
bind index,pager B sidebar-toggle-visible
|
|
#+END_SRC
|
|
|
|
*** Attachments
|
|
#+BEGIN_SRC conf
|
|
bind attach <return> view-mailcap
|
|
|
|
macro attach W <save-entry><kill-line>~/Downloads/<enter>y "Save entry"
|
|
#+END_SRC
|
|
|
|
** Colors
|
|
*** Basic colors
|
|
#+BEGIN_SRC conf
|
|
color normal brightblue default
|
|
color error red default
|
|
color tilde white default
|
|
color message cyan default
|
|
color markers red black
|
|
color attachment black default
|
|
color search brightmagenta default
|
|
color status brightblue white
|
|
color indicator brightwhite yellow
|
|
color tree yellow default
|
|
|
|
# basic monocolor screen
|
|
mono bold bold
|
|
mono underline underline
|
|
mono indicator reverse
|
|
mono error bold
|
|
#+END_SRC
|
|
|
|
*** Index
|
|
#+BEGIN_SRC conf
|
|
#color index red default "~D(!~p|~p)" # deleted
|
|
#color index white default ~F # flagged
|
|
#color index brightred default ~= # duplicate messages
|
|
#color index brightcyan default "~A!~N!~T!~p!~Q!~F!~D!~P" # the rest
|
|
#color index J_base default "~A~N!~T!~p!~Q!~F!~D" # the rest, new
|
|
color index red default "~A" # all messages
|
|
color index brightred default "~E" # expired messages
|
|
color index blue default "~N" # new messages
|
|
color index blue default "~O" # old messages
|
|
color index brightmagenta default "~Q" # messages that have been replied to
|
|
color index brightcyan default "~R" # read messages
|
|
color index blue default "~U" # unread messages
|
|
color index blue default "~U~$" # unread, unreferenced messages
|
|
color index brightblue default "~v" # messages part of a collapsed thread
|
|
color index brightblue default "~P" # messages from me
|
|
color index cyan default "~p!~F" # messages to me
|
|
color index cyan default "~N~p!~F" # new messages to me
|
|
color index cyan default "~U~p!~F" # unread messages to me
|
|
color index brightcyan default "~R~p!~F" # messages to me
|
|
color index red default "~F" # flagged messages
|
|
color index red default "~F~p" # flagged messages to me
|
|
color index red default "~N~F" # new flagged messages
|
|
color index red default "~N~F~p" # new flagged messages to me
|
|
color index red default "~U~F~p" # new flagged messages to me
|
|
color index white red "~D" # deleted messages
|
|
color index brightgreen default "~v~(!~N)" # collapsed thread with no unread
|
|
color index yellow default "~v~(~N)" # collapsed thread with some unread
|
|
color index green default "~N~v~(~N)" # collapsed thread with unread parent
|
|
# statusbg used to indicated flagged when foreground color shows other status
|
|
# for collapsed thread
|
|
color index red white "~v~(~F)!~N" # collapsed thread with flagged, no unread
|
|
color index yellow white "~v~(~F~N)" # collapsed thread with some unread & flagged
|
|
color index green white "~N~v~(~F~N)" # collapsed thread with unread parent & flagged
|
|
color index green white "~N~v~(~F)" # collapsed thread with unread parent, no unread inside, but some flagged
|
|
color index cyan white "~v~(~p)" # collapsed thread with unread parent, no unread inside, some to me directly
|
|
color index yellow red "~v~(~D)" # thread with deleted (doesn't differentiate between all or partial)
|
|
#color index yellow default "~(~N)" # messages in threads with some unread
|
|
#color index green default "~S" # superseded messages
|
|
#color index red default "~T" # tagged messages
|
|
#color index brightred red "~=" # duplicated messages
|
|
#+END_SRC
|
|
|
|
*** Message headers
|
|
#+BEGIN_SRC conf
|
|
color hdrdefault brightcyan default
|
|
color header brightblue default "^(From)"
|
|
color header blue default "^(Subject)"
|
|
#+END_SRC
|
|
|
|
*** Body
|
|
#+BEGIN_SRC conf
|
|
color quoted blue default
|
|
color quoted1 cyan default
|
|
color quoted2 yellow default
|
|
color quoted3 red default
|
|
color quoted4 brightred default
|
|
|
|
color signature brightcyan default
|
|
color bold white default
|
|
color underline white default
|
|
color normal default default
|
|
|
|
color body brightgreen default "[;:][-o][)/(|]" # emoticons
|
|
color body brightgreen default "[;:][)(|]" # emoticons
|
|
color body brightgreen default "[*]?((N)?ACK|CU|LOL|SCNR|BRB|BTW|CWYL|\
|
|
|FWIW|vbg|GD&R|HTH|HTHBE|IMHO|IMNSHO|\
|
|
|IRL|RTFM|ROTFL|ROFL|YMMV)[*]?"
|
|
color body brightgreen default "[ ][*][^*]*[*][ ]?" # more emoticon?
|
|
color body brightgreen default "[ ]?[*][^*]*[*][ ]" # more emoticon?
|
|
#+END_SRC
|
|
|
|
*** PGP
|
|
#+BEGIN_SRC conf
|
|
color body red default "(BAD signature)"
|
|
color body cyan default "(Good signature)"
|
|
color body brightwhite default "^gpg: Good signature .*"
|
|
color body brightblue default "^gpg: "
|
|
color body brightblue red "^gpg: BAD signature from.*"
|
|
mono body bold "^gpg: Good signature"
|
|
mono body bold "^gpg: BAD signature from.*"
|
|
#+END_SRC
|
|
|
|
*** Urls
|
|
#+BEGIN_SRC conf
|
|
color body red default "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?(#([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?|(www|ftp)\\.(([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?(:[0-9]+)?(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?(#([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?)[^].,:;!)? \t\r\n<>\"]"
|
|
#+END_SRC
|
|
|
|
*** Emails
|
|
#+BEGIN_SRC conf
|
|
# color body J_magent default "((@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]),)*@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]):)?[0-9a-z_.+%$-]+@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\])"
|
|
#+END_SRC
|
|
|
|
*** Various smilies and the like
|
|
#+BEGIN_SRC conf
|
|
#color body brightblack default "<[Gg]>" # <g>
|
|
#color body brightblack default "<[Bb][Gg]>" # <bg>
|
|
#color body yellow default " [;:]-*[})>{(<|]" # :-) etc...
|
|
# *bold*
|
|
#color body blue default "(^|[[:space:][:punct:]])\\*[^*]+\\*([[:space:][:punct:]]|$)"
|
|
#mono body bold "(^|[[:space:][:punct:]])\\*[^*]+\\*([[:space:][:punct:]]|$)"
|
|
# _underline_
|
|
#color body blue default "(^|[[:space:][:punct:]])_[^_]+_([[:space:][:punct:]]|$)"
|
|
#mono body underline "(^|[[:space:][:punct:]])_[^_]+_([[:space:][:punct:]]|$)"
|
|
# /italic/ (Sometimes gets directory names)
|
|
#color body blue default "(^|[[:space:][:punct:]])/[^/]+/([[:space:][:punct:]]|$)"
|
|
#mono body underline "(^|[[:space:][:punct:]])/[^/]+/([[:space:][:punct:]]|$)"
|
|
|
|
# Border lines.
|
|
#color body blue default "( *[-+=#*~_]){6,}"
|
|
|
|
#folder-hook . "color status J_black J_status "
|
|
#folder-hook gmail/inbox "color status J_black yellow "
|
|
#folder-hook gmail/important "color status J_black yellow "
|
|
#+END_SRC
|
|
|
|
** Sidebar
|
|
#+BEGIN_SRC conf
|
|
# Should the Sidebar be shown?
|
|
set sidebar_visible = yes
|
|
|
|
# How wide should the Sidebar be in screen columns?
|
|
# Note: Some characters, e.g. Chinese, take up two columns each.
|
|
set sidebar_width = 20
|
|
|
|
# Should the mailbox paths be abbreviated?
|
|
set sidebar_short_path = yes
|
|
|
|
# When abbreviating mailbox path names, use any of these characters as path
|
|
# separators. Only the part after the last separators will be shown.
|
|
# For file folders '/' is good. For IMAP folders, often '.' is useful.
|
|
set sidebar_delim_chars = '/.'
|
|
|
|
# If the mailbox path is abbreviated, should it be indented?
|
|
set sidebar_folder_indent = yes
|
|
|
|
# Indent mailbox paths with this string.
|
|
set sidebar_indent_string = ' '
|
|
|
|
# Make the Sidebar only display mailboxes that contain new, or flagged,
|
|
# mail.
|
|
set sidebar_new_mail_only = no
|
|
|
|
# Any mailboxes that are whitelisted will always be visible, even if the
|
|
# sidebar_new_mail_only option is enabled.
|
|
# sidebar_whitelist '/home/user/mailbox1'
|
|
# sidebar_whitelist '/home/user/mailbox2'
|
|
|
|
# When searching for mailboxes containing new mail, should the search wrap
|
|
# around when it reaches the end of the list?
|
|
set sidebar_next_new_wrap = no
|
|
|
|
# Show the Sidebar on the right-hand side of the screen
|
|
set sidebar_on_right = no
|
|
|
|
# The character to use as the divider between the Sidebar and the other Mutt
|
|
# panels.
|
|
# Note: Only the first character of this string is used.
|
|
set sidebar_divider_char = '│'
|
|
|
|
# Enable extended buffy mode to calculate total, new, and flagged
|
|
# message counts for each mailbox.
|
|
set mail_check_stats
|
|
|
|
# Display the Sidebar mailboxes using this format string.
|
|
set sidebar_format = '%B%?F? [%F]?%* %?N?%N/?%S'
|
|
|
|
# Sort the mailboxes in the Sidebar using this method:
|
|
# count - total number of messages
|
|
# flagged - number of flagged messages
|
|
# new - number of new messages
|
|
# path - mailbox path
|
|
# unsorted - do not sort the mailboxes
|
|
set sidebar_sort_method = 'unsorted'
|
|
#+END_SRC
|
|
|
|
** TODO [#A] Searching using Mu
|
|
#+begin_src conf
|
|
# mutt macros for mu
|
|
macro index,pager \Cf "<shell-escape>mu find --clearlinks --format=links --linksdir=~/.mail/search " \
|
|
"mu find"
|
|
macro index,pager gf "<change-folder-readonly>~/.mail/search<enter>" \
|
|
"mu find results"
|
|
#+end_src
|
|
|
|
** Contacts with Mu
|
|
#+BEGIN_SRC conf
|
|
# set query_command="goobook query '%s'"
|
|
# set query_command="lbdbq '%s'"
|
|
set query_command="mu cfind '%s' -o mutt-ab"
|
|
|
|
bind editor <Tab> complete-query
|
|
#+END_SRC
|
|
|
|
** Paths
|
|
#+BEGIN_SRC conf
|
|
set folder = ~/.mail # mail location
|
|
set alias_file = ~/.config/neomutt/alias # where to store aliases
|
|
set header_cache = ~/.config/neomutt/cache/headers # where to store headers
|
|
set message_cachedir = ~/.config/neomutt/cache/bodies # where to store bodies
|
|
set certificate_file = ~/.config/neomutt/certificates # where to store certs
|
|
# set mailcap_path = ~/.config/neomutt/config/mailcap # entries for filetypes
|
|
set tmpdir = ~/.config/neomutt/temp # where to keep temp files
|
|
#+END_SRC
|
|
|
|
** TODO Mailcap configuration
|
|
** TODO Print
|
|
https://unix.stackexchange.com/questions/20456/pretty-print-mails-from-mutt
|
|
|
|
#+BEGIN_SRC conf
|
|
set print_command="/usr/bin/muttprint %s -p ctb110c1u"
|
|
#+END_SRC
|
|
|
|
** Accounts
|
|
#+BEGIN_SRC conf
|
|
set spoolfile = "+gmail/Inbox" # Default inbox
|
|
set realname = "Dehaeze Thomas"
|
|
set from = "dehaeze.thomas@gmail.com"
|
|
|
|
folder-hook gmail/* source ~/.config/neomutt/accounts/gmail
|
|
folder-hook esrf/* source ~/.config/neomutt/accounts/esrf
|
|
folder-hook ulg/* source ~/.config/neomutt/accounts/ulg
|
|
|
|
macro index,pager gu "<change-folder>+ulg/Inbox<enter>" "go to inbox"
|
|
macro index,pager ge "<change-folder>+esrf/Inbox<enter>" "go to inbox"
|
|
macro index,pager gm "<change-folder>+gmail/Inbox<enter>" "go to inbox"
|
|
#+END_SRC
|
|
|
|
*** Gmail
|
|
**** Configuration
|
|
#+begin_src conf :tangle ~/.config/neomutt/accounts/gmail :comments none
|
|
set from = "dehaeze.thomas@gmail.com"
|
|
set sendmail = "msmtp -a gmail"
|
|
|
|
# Other special folders.
|
|
set mbox = "+gmail/Archive"
|
|
unset record # Don't copy send message to Sent folder: Gmail does that for us
|
|
set postponed = "+gmail/Drafts"
|
|
|
|
set signature = "~/.config/neomutt/accounts/gmail.signature"
|
|
|
|
color status cyan default
|
|
|
|
macro index,pager d \
|
|
"<save-message>+gmail/Archive<enter>" \
|
|
"Move message to the Archive"
|
|
|
|
macro index,pager D \
|
|
"<save-message>+gmail/Trash<enter>" \
|
|
"Move message to the Trash"
|
|
#+end_src
|
|
|
|
**** Signature
|
|
#+begin_src conf :tangle ~/.config/neomutt/accounts/gmail.signature :comments none :padline no
|
|
Thomas Dehaeze
|
|
#+end_src
|
|
This empty code block is used to add a new line after signatude
|
|
#+begin_src conf :tangle ~/.config/neomutt/accounts/gmail.signature :comments none :padline no
|
|
#+end_src
|
|
*** ESRF
|
|
**** Configuration
|
|
#+begin_src conf :tangle ~/.config/neomutt/accounts/esrf :comments none
|
|
set from = "thomas.dehaeze@esrf.fr"
|
|
set sendmail = "msmtp -a esrf"
|
|
|
|
# Other special folders.
|
|
set mbox = "+esrf/Archive"
|
|
set record = "+esrf/Sent"
|
|
set postponed = "+esrf/Drafts"
|
|
|
|
set signature = "~/.config/neomutt/accounts/esrf.signature"
|
|
|
|
color status cyan default
|
|
|
|
macro index,pager d \
|
|
"<save-message>+esrf/Archive<enter>" \
|
|
"Move message to the Archive"
|
|
|
|
macro index,pager D \
|
|
"<save-message>+esrf/Trash<enter>" \
|
|
"Move message to the Trash"
|
|
#+end_src
|
|
|
|
**** Signature
|
|
#+begin_src conf :tangle ~/.config/neomutt/accounts/esrf.signature :comments none :padline no
|
|
Thomas Dehaeze
|
|
#+end_src
|
|
This empty code block is used to add a new line after signatude
|
|
#+begin_src conf :tangle ~/.config/neomutt/accounts/esrf.signature :comments none :padline no
|
|
#+end_src
|
|
|
|
*** ULG
|
|
**** Configuration
|
|
#+begin_src conf :tangle ~/.config/neomutt/accounts/ulg :comments none
|
|
set from = "thomas.dehaeze@doct.uliege.be"
|
|
set sendmail = "msmtp -a ulg"
|
|
|
|
# Other special folders.
|
|
set mbox = "+ulg/Archive"
|
|
set record = "+ulg/Sent"
|
|
set postponed = "+ulg/Drafts"
|
|
|
|
set signature = "~/.config/neomutt/accounts/ulg.signature"
|
|
|
|
color status cyan default
|
|
|
|
macro index,pager d \
|
|
"<save-message>+ulg/Archive<enter>" \
|
|
"Move message to the Archive"
|
|
|
|
macro index,pager D \
|
|
"<save-message>+ulg/Trash<enter>" \
|
|
"Move message to the Trash"
|
|
#+end_src
|
|
|
|
**** Signature
|
|
#+begin_src conf :tangle ~/.config/neomutt/accounts/ulg.signature :comments none :padline no
|
|
Thomas Dehaeze
|
|
#+end_src
|
|
This empty code block is used to add a new line after signatude
|
|
#+begin_src conf :tangle ~/.config/neomutt/accounts/esrf.signature :comments none :padline no
|
|
#+end_src
|
|
|
|
** Mailboxes to show in the sidebar.
|
|
#+BEGIN_SRC conf
|
|
mailboxes \
|
|
+search \
|
|
"+Google" \
|
|
+gmail/Inbox \
|
|
+gmail/Archive \
|
|
+gmail/Drafts \
|
|
+gmail/Sent \
|
|
+gmail/Trash \
|
|
"+ESRF" \
|
|
+esrf/Inbox \
|
|
+esrf/Archive \
|
|
+esrf/Drafts \
|
|
+esrf/Sent \
|
|
+esrf/Trash \
|
|
"+ULG" \
|
|
+ulg/Inbox \
|
|
+ulg/Archive \
|
|
+ulg/Drafts \
|
|
+ulg/Sent \
|
|
+ulg/Trash \
|
|
|
|
set sendmail_wait = 0 # no please don't silently fail, email is important
|
|
unset move
|
|
#+END_SRC
|
|
|
|
** TODO [#A] Use Vim to compose email, with a few default options.
|
|
- [ ] Add Goyo by default and when closing it, close vim at the same time
|
|
#+BEGIN_SRC conf
|
|
set editor = "nvim -c '/\\n--' -c ':noh' -c 'startinsert'"
|
|
#+END_SRC
|
|
|
|
** Basic Options
|
|
#+BEGIN_SRC conf
|
|
set wait_key = no # shut up, mutt
|
|
set mbox_type = Maildir # mailbox type
|
|
set help = no # No top bar
|
|
set timeout = 3 # idle time before scanning
|
|
set sleep_time = 0 # how long NeoMutt may wait after an error message
|
|
set mail_check = 0 # minimum time between scans
|
|
set delete # don't ask, just do
|
|
unset confirmappend # don't ask, just do!
|
|
set quit # don't ask, just do!!
|
|
set mark_old = no # read/new is good enough for me
|
|
set beep_new # bell on new mails
|
|
# set pipe_decode # strip headers and eval mimes when piping
|
|
set thorough_search # strip headers and eval mimes before searching
|
|
set send_charset="us-ascii:utf-8:iso-8859-1"
|
|
set use_from # respect the From: address the editor sends back
|
|
#+END_SRC
|
|
|
|
** Status Bar
|
|
#+BEGIN_SRC conf
|
|
set status_on_top = no
|
|
set status_chars = " *%A"
|
|
set status_format = "───[ Folder: %f ]───[%r%m messages%?n? (%n new)?%?d? (%d to delete)?%?t? (%t tagged)? ]───%>─%?p?( %p postponed )?───"
|
|
#+END_SRC
|
|
|
|
** Index View Options
|
|
#+BEGIN_SRC conf
|
|
set date_format = "%d/%m/%y %H:%M"
|
|
set index_format = "[%Z] %D %-20.20F %s"
|
|
# set index_format = " %Z %<[y?%<[m?%<[d?%[ %H:%M]&%[ %a %d]>&%[ %b %d]>&%[%d/%m/%Y]> %-30.30F %<M?(%2M)& > %?GS?%GS& ?%?GE?%GE& ?%?GA?%GA& ? %g %s"
|
|
# set index_format='%4C %S %[%y.%m.%d] %-18.18n %?GU?%GU& ? %?GR?%GR& ? %?GI?%GI& ? %s'
|
|
|
|
set sort = threads # like gmail
|
|
set sort_aux = reverse-last-date-received # like gmail
|
|
set uncollapse_jump # don't collapse on an unread message
|
|
set sort_re # thread based on regex
|
|
set reply_regexp = "^(([Rr][Ee]?(\[[0-9]+\])?: *)?(\[[^]]+\] *)?)*"
|
|
set folder_format = "%2C %t %N %8s %f"
|
|
#+END_SRC
|
|
|
|
** Pager View Options
|
|
#+BEGIN_SRC conf
|
|
set pager_index_lines = 10 # number of index lines to show
|
|
set pager_context = 3 # number of context lines to show
|
|
set pager_stop # don't go to next message automatically
|
|
set menu_scroll # scroll in menus
|
|
set tilde # show tildes like in vim
|
|
set markers = no # no ugly plus signs
|
|
set quote_regexp = "^( {0,4}[>|:#%]| {0,4}[a-z0-9]+[>|]+)+"
|
|
|
|
auto_view text/html # view html automatically
|
|
alternative_order text/plain text/enriched text/html # save html for last
|
|
#+END_SRC
|
|
|
|
** Compose View Options
|
|
#+BEGIN_SRC conf
|
|
set envelope_from # which from?
|
|
set sig_dashes # dashes before sig
|
|
set sig_on_top # the signature is just below the response
|
|
set edit_headers # show headers when composing
|
|
set fast_reply # skip to compose when replying
|
|
set askcc # ask for CC:
|
|
set fcc_attach # save attachments with the body
|
|
set mime_forward = yes # forward attachments as part of body
|
|
set forward_format = "Fwd: %s" # format of subject when forwarding
|
|
set forward_decode # decode when forwarding
|
|
set attribution = "On %d, %n wrote:" # format of quoting header
|
|
set reply_to # reply to Reply to: field
|
|
set reverse_name # reply as whomever it was to
|
|
set include # include message in replies
|
|
set forward_quote # include message in forwards
|
|
#+END_SRC
|
|
|
|
** Attachment View Options
|
|
#+BEGIN_SRC conf
|
|
set attach_format = "[%D %t] %2n [%-7.7m/%10.10M] %.40d %> [%s] "
|
|
#+END_SRC
|
|
|
|
** Headers
|
|
#+BEGIN_SRC conf
|
|
ignore * # ignore all headers
|
|
unignore from: to: cc: date: subject: # show only these
|
|
unhdr_order *
|
|
hdr_order from: to: cc: date: subject: # and in this order
|
|
#+END_SRC
|
|
|
|
** Progress Bar
|
|
#+BEGIN_SRC conf
|
|
color progress white red
|
|
#+END_SRC
|
|
|
|
** TODO Open PDF from mail
|
|
=~/scripts/openfile.sh=
|
|
|
|
** TODO [#B] Integrate with contact manager
|
|
** TODO Integration with org-mode
|
|
https://www.donarmstrong.com/posts/org_mode_mutt_capture/
|
|
https://upsilon.cc/~zack/blog/posts/2010/02/integrating_Mutt_with_Org-mode/
|
|
** TODO Send HTML mails using Markdown
|
|
https://unix.stackexchange.com/questions/108485/send-email-written-in-markdown-using-mutt/424162
|
|
https://github.com/Roguelazer/muttdown
|
|
|
|
** TODO Attachments
|
|
*** Attach multiple files at once
|
|
First, tag the files you want to send using =t=, then =;= to apply the action on all tagged files and finally =<enter>= to add them all.
|
|
*** Forgotten Attachment
|
|
#+begin_src conf
|
|
set abort_noattach = ask-yes
|
|
set abort_noattach_regex = "\\<(attach(|ed|ments?)|(attaché|attachés|attache|attachons|joint|jointe|joints|jointes|joins|joignons))\\>"
|
|
#+end_src
|
|
|
|
*** TODO Attach file using GUI File Manager
|
|
#+BEGIN_SRC conf
|
|
# macro compose A "<shell-escape>bash $HOME/.config/neomut/bin/attach-file.sh<enter><enter-command>source /tmp/muttpick<enter>" "Attach with GUI"
|
|
#+END_SRC
|
|
*** Cheatsheet
|
|
| Command | Usage |
|
|
|---------+---------------|
|
|
| =<spc>= | Open the file |
|
|
|
|
** TODO Open Url from mail
|
|
#+BEGIN_SRC bash
|
|
yay -S urlview
|
|
#+END_SRC
|
|
|
|
** TODO View emails while composing
|
|
https://wiki.archlinux.org/index.php/Mutt#Display_another_email_while_composing
|
|
|
|
** TODO Integration with calendar application
|
|
http://jasonwryan.com/blog/2014/04/05/calendar/
|
|
https://gist.github.com/guiniol/5109c5bd953af950e0530b720507d704
|
|
=~/scripts/printics.sh=
|
|
|
|
* TODO Notification system
|
|
A script (=~/scripts/checkmail.sh=) is used to retreive new mails and use =notify=send= is there are new received mails.
|