46 KiB
Mail Configuration
- Synchronize Mailboxes - Mbsync
- Send Mails - Msmtp
- Mail Indexer - Mu
- Mail Client - NeoMutt
Synchronize Mailboxes - Mbsync
Global Defaults
# 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
Gmail Account
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
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
# 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
# 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
ESRF Account
IMAPAccount esrf
Host imaps.esrf.fr
User dehaeze
PassCmd "pass email/thomas.dehaeze@esrf.fr"
SSLType IMAPS
AuthMechs LOGIN
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
Channel esrf
Master :esrf-remote:
Slave :esrf-local:
For doing a quick sync of just the INBOX with `mbsync esrf-download`.
Channel esrf-download
Master :esrf-remote:"INBOX"
Slave :esrf-local:Inbox
Create Slave
Expunge Slave
Sync Pull
ULG Account
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
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
Channel ulg
Master :ulg-remote:
Slave :ulg-local:
For doing a quick sync of just the INBOX with `mbsync ulg-download`.
Channel ulg-download
Master :ulg-remote:"Inbox"
Slave :ulg-local:Inbox
Create Slave
Expunge Slave
Sync Pull
Send Mails - Msmtp
Defaults
defaults
auth on
tls on
tls_certcheck off
Gmail Account
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"
ESRF Account
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"
ULG Account
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"
Default Account
account default : gmail
TODO Mail Indexer - Mu
Mail Client - NeoMutt
Documentation:
man neomutt
man neomuttrc
Bindings
Unding all the key bindings
bind generic,pager,editor,index a noop
bind generic,pager,editor,index b noop
bind generic,pager,editor,index c noop
bind generic,pager,editor,index d noop
bind generic,pager,editor,index e noop
bind generic,pager,editor,index f noop
bind generic,pager,editor,index g noop
bind generic,pager,editor,index h noop
bind generic,pager,editor,index i noop
bind generic,pager,editor,index j noop
bind generic,pager,editor,index k noop
bind generic,pager,editor,index l noop
bind generic,pager,editor,index m noop
bind generic,pager,editor,index n noop
bind generic,pager,editor,index o noop
bind generic,pager,editor,index p noop
bind generic,pager,editor,index q noop
bind generic,pager,editor,index r noop
bind generic,pager,editor,index s noop
bind generic,pager,editor,index t noop
bind generic,pager,editor,index u noop
bind generic,pager,editor,index v noop
bind generic,pager,editor,index w noop
bind generic,pager,editor,index x noop
bind generic,pager,editor,index y noop
bind generic,pager,editor,index z noop
bind generic,pager,editor,index A noop
bind generic,pager,editor,index B noop
bind generic,pager,editor,index C noop
bind generic,pager,editor,index D noop
bind generic,pager,editor,index E noop
bind generic,pager,editor,index F noop
bind generic,pager,editor,index G noop
bind generic,pager,editor,index H noop
bind generic,pager,editor,index I noop
bind generic,pager,editor,index J noop
bind generic,pager,editor,index K noop
bind generic,pager,editor,index L noop
bind generic,pager,editor,index M noop
bind generic,pager,editor,index N noop
bind generic,pager,editor,index O noop
bind generic,pager,editor,index P noop
bind generic,pager,editor,index Q noop
bind generic,pager,editor,index R noop
bind generic,pager,editor,index S noop
bind generic,pager,editor,index T noop
bind generic,pager,editor,index U noop
bind generic,pager,editor,index V noop
bind generic,pager,editor,index W noop
bind generic,pager,editor,index X noop
bind generic,pager,editor,index Y noop
bind generic,pager,editor,index Z noop
bind generic,pager,editor,index <Tab> noop
bind generic,pager,editor,index <Space> noop
bind generic,pager,editor,index <PageUp> noop
bind generic,pager,editor,index <PageDown> noop
bind generic,pager,editor,index <Home> noop
bind generic,pager,editor,index <End> noop
bind generic,pager,editor,index <Insert> noop
bind generic,pager,editor,index <Delete> noop
bind generic,pager,editor,index <Up> noop
bind generic,pager,editor,index <Down> noop
bind generic,pager,editor,index <Left> noop
bind generic,pager,editor,index <Right> noop
bind generic,pager,editor,index <Enter> noop
bind generic,pager,editor,index <Return> noop
bind generic,pager,editor,index 1 noop
bind generic,pager,editor,index 2 noop
bind generic,pager,editor,index 3 noop
bind generic,pager,editor,index 4 noop
bind generic,pager,editor,index 5 noop
bind generic,pager,editor,index 6 noop
bind generic,pager,editor,index 7 noop
bind generic,pager,editor,index 8 noop
bind generic,pager,editor,index 9 noop
bind generic,pager,editor,index 0 noop
bind generic,pager,editor,index ! noop
bind generic,pager,editor,index @ noop
bind generic,pager,editor,index $ noop
bind generic,pager,editor,index % noop
bind generic,pager,editor,index ^ noop
bind generic,pager,editor,index & noop
bind generic,pager,editor,index * noop
bind generic,pager,editor,index ( noop
bind generic,pager,editor,index ) noop
bind generic,pager,editor,index \Ca noop
bind generic,pager,editor,index \Cb noop
bind generic,pager,editor,index \Cc noop
bind generic,pager,editor,index \Cd noop
bind generic,pager,editor,index \Ce noop
bind generic,pager,editor,index \Cf noop
bind generic,pager,editor,index \Cg noop
bind generic,pager,editor,index \Ch noop
bind generic,pager,editor,index \Ci noop
bind generic,pager,editor,index \Cj noop
bind generic,pager,editor,index \Ck noop
bind generic,pager,editor,index \Cl noop
bind generic,pager,editor,index \Cm noop
bind generic,pager,editor,index \Cn noop
bind generic,pager,editor,index \Co noop
bind generic,pager,editor,index \Cp noop
bind generic,pager,editor,index \Cq noop
bind generic,pager,editor,index \Cr noop
bind generic,pager,editor,index \Cs noop
bind generic,pager,editor,index \Ct noop
bind generic,pager,editor,index \Cu noop
bind generic,pager,editor,index \Cv noop
bind generic,pager,editor,index \Cw noop
bind generic,pager,editor,index \Cx noop
bind generic,pager,editor,index \Cy noop
bind generic,pager,editor,index \Cz noop
bind generic,pager,editor,index \CA noop
bind generic,pager,editor,index \CB noop
bind generic,pager,editor,index \CC noop
bind generic,pager,editor,index \CD noop
bind generic,pager,editor,index \CE noop
bind generic,pager,editor,index \CF noop
bind generic,pager,editor,index \CG noop
bind generic,pager,editor,index \CH noop
bind generic,pager,editor,index \CI noop
bind generic,pager,editor,index \CJ noop
bind generic,pager,editor,index \CK noop
bind generic,pager,editor,index \CL noop
bind generic,pager,editor,index \CM noop
bind generic,pager,editor,index \CN noop
bind generic,pager,editor,index \CO noop
bind generic,pager,editor,index \CP noop
bind generic,pager,editor,index \CQ noop
bind generic,pager,editor,index \CR noop
bind generic,pager,editor,index \CS noop
bind generic,pager,editor,index \CT noop
bind generic,pager,editor,index \CU noop
bind generic,pager,editor,index \CV noop
bind generic,pager,editor,index \CW noop
bind generic,pager,editor,index \CX noop
bind generic,pager,editor,index \CY noop
bind generic,pager,editor,index \CZ noop
bind generic,pager,editor,index \C<Tab> noop
bind generic,pager,editor,index \C<Space> noop
bind generic,pager,editor,index \C<PageUp> noop
bind generic,pager,editor,index \C<PageDown> noop
bind generic,pager,editor,index \C<Home> noop
bind generic,pager,editor,index \C<End> noop
bind generic,pager,editor,index \C<Insert> noop
bind generic,pager,editor,index \C<Delete> noop
bind generic,pager,editor,index \C<Up> noop
bind generic,pager,editor,index \C<Down> noop
bind generic,pager,editor,index \C<Left> noop
bind generic,pager,editor,index \C<Right> noop
bind generic,pager,editor,index \C<Enter> noop
bind generic,pager,editor,index \C<Return> noop
bind generic,pager,editor,index \C1 noop
bind generic,pager,editor,index \C2 noop
bind generic,pager,editor,index \C3 noop
bind generic,pager,editor,index \C4 noop
bind generic,pager,editor,index \C5 noop
bind generic,pager,editor,index \C6 noop
bind generic,pager,editor,index \C7 noop
bind generic,pager,editor,index \C8 noop
bind generic,pager,editor,index \C9 noop
bind generic,pager,editor,index \C0 noop
bind generic,pager,editor,index \C! noop
bind generic,pager,editor,index \C$ noop
bind generic,pager,editor,index \C% noop
bind generic,pager,editor,index \C^ noop
bind generic,pager,editor,index \C& noop
bind generic,pager,editor,index \C* noop
bind generic,pager,editor,index \C( noop
bind generic,pager,editor,index \C) noop
bind generic,pager,editor,index <Esc>a noop
bind generic,pager,editor,index <Esc>b noop
bind generic,pager,editor,index <Esc>c noop
bind generic,pager,editor,index <Esc>d noop
bind generic,pager,editor,index <Esc>e noop
bind generic,pager,editor,index <Esc>f noop
bind generic,pager,editor,index <Esc>g noop
bind generic,pager,editor,index <Esc>h noop
bind generic,pager,editor,index <Esc>i noop
bind generic,pager,editor,index <Esc>j noop
bind generic,pager,editor,index <Esc>k noop
bind generic,pager,editor,index <Esc>l noop
bind generic,pager,editor,index <Esc>m noop
bind generic,pager,editor,index <Esc>n noop
bind generic,pager,editor,index <Esc>o noop
bind generic,pager,editor,index <Esc>p noop
bind generic,pager,editor,index <Esc>q noop
bind generic,pager,editor,index <Esc>r noop
bind generic,pager,editor,index <Esc>s noop
bind generic,pager,editor,index <Esc>t noop
bind generic,pager,editor,index <Esc>u noop
bind generic,pager,editor,index <Esc>v noop
bind generic,pager,editor,index <Esc>w noop
bind generic,pager,editor,index <Esc>x noop
bind generic,pager,editor,index <Esc>y noop
bind generic,pager,editor,index <Esc>z noop
bind generic,pager,editor,index <Esc>A noop
bind generic,pager,editor,index <Esc>B noop
bind generic,pager,editor,index <Esc>C noop
bind generic,pager,editor,index <Esc>D noop
bind generic,pager,editor,index <Esc>E noop
bind generic,pager,editor,index <Esc>F noop
bind generic,pager,editor,index <Esc>G noop
bind generic,pager,editor,index <Esc>H noop
bind generic,pager,editor,index <Esc>I noop
bind generic,pager,editor,index <Esc>J noop
bind generic,pager,editor,index <Esc>K noop
bind generic,pager,editor,index <Esc>L noop
bind generic,pager,editor,index <Esc>M noop
bind generic,pager,editor,index <Esc>N noop
bind generic,pager,editor,index <Esc>O noop
bind generic,pager,editor,index <Esc>P noop
bind generic,pager,editor,index <Esc>Q noop
bind generic,pager,editor,index <Esc>R noop
bind generic,pager,editor,index <Esc>S noop
bind generic,pager,editor,index <Esc>T noop
bind generic,pager,editor,index <Esc>U noop
bind generic,pager,editor,index <Esc>V noop
bind generic,pager,editor,index <Esc>W noop
bind generic,pager,editor,index <Esc>X noop
bind generic,pager,editor,index <Esc>Y noop
bind generic,pager,editor,index <Esc>Z noop
bind generic,pager,editor,index <Esc><Tab> noop
bind generic,pager,editor,index <Esc><Space> noop
bind generic,pager,editor,index <Esc><PageUp> noop
bind generic,pager,editor,index <Esc><PageDown> noop
bind generic,pager,editor,index <Esc><Home> noop
bind generic,pager,editor,index <Esc><End> noop
bind generic,pager,editor,index <Esc><Insert> noop
bind generic,pager,editor,index <Esc><Delete> noop
bind generic,pager,editor,index <Esc><Up> noop
bind generic,pager,editor,index <Esc><Down> noop
bind generic,pager,editor,index <Esc><Left> noop
bind generic,pager,editor,index <Esc><Right> noop
bind generic,pager,editor,index <Esc><Enter> noop
bind generic,pager,editor,index <Esc><Return> noop
bind generic,pager,editor,index <Esc>1 noop
bind generic,pager,editor,index <Esc>2 noop
bind generic,pager,editor,index <Esc>3 noop
bind generic,pager,editor,index <Esc>4 noop
bind generic,pager,editor,index <Esc>5 noop
bind generic,pager,editor,index <Esc>6 noop
bind generic,pager,editor,index <Esc>7 noop
bind generic,pager,editor,index <Esc>8 noop
bind generic,pager,editor,index <Esc>9 noop
bind generic,pager,editor,index <Esc>0 noop
bind generic,pager,editor,index <Esc>! noop
bind generic,pager,editor,index <Esc>@ noop
bind generic,pager,editor,index <Esc>$ noop
bind generic,pager,editor,index <Esc>% noop
bind generic,pager,editor,index <Esc>^ noop
bind generic,pager,editor,index <Esc>& noop
bind generic,pager,editor,index <Esc>* noop
bind generic,pager,editor,index <Esc>( noop
bind generic,pager,editor,index <Esc>) noop
Quit Neomutt
bind index,pager,compose Q exit
macro index q "<shell-escape>if [ $TMUX ]; then tmux detach; fi<enter>"
Generic
bind generic <Return> select-entry
bind generic l select-entry
bind generic,index k previous-entry
bind generic,index j next-entry
bind generic,index 0 first-entry
bind generic,index $ last-entry
bind generic,index \031 previous-entry # Mouse wheel
bind generic,index \005 next-entry # Mouse wheel
bind generic,index gg first-entry
bind generic,index G last-entry
bind generic,index,pager \Cu half-up
bind generic,index,pager \Cd half-down
bind generic,index,pager \Ce next-line
bind generic,index,pager \Cy previous-line
Index and Pager
bind pager k previous-line
bind pager j next-line
bind index <space> collapse-thread
bind index,pager K previous-entry
bind index,pager J next-entry
bind index l display-message
bind index <Return> display-message
bind pager l view-attachments
bind pager gg top
bind pager 0 top
bind pager G bottom
bind pager $ bottom
macro index h "<change-folder>?" "Go back to the list of mailboxes"
bind pager h exit
bind pager q exit
macro index c "<change-folder>?<toggle-mailboxes>" "change folder"
bind index,pager u undelete-message
bind index,pager P print-message
# Marl All message as read
macro index \Cr \
"<tag-pattern>~N<enter><tag-prefix><clear-flag>N<untag-pattern>.<enter>" \
"mark all new as read"
bind index za collapse-thread
bind index zA collapse-all # Missing :folddisable/foldenable
Write/Reply/Forward mail
bind index,pager p recall-message
bind index,pager m mail
bind index,pager r reply
bind index,pager R group-reply
bind index,pager b bounce-message
bind index,pager f forward-message
Sync Mailbox
bind index,pager s sync-mailbox
Sync email
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>"
Make quick html view macro
macro index,pager H "<view-attachments><search>html<enter><view-mailcap><exit>"
Open mail with Vim
macro index,pager V "<view-attachments><search>plain<enter><view-mailcap><exit>"
# bind index,pager U toggle-new
Labels
bind index,pager y edit-label
bind index,pager Y modify-labels
Search
bind generic,index,pager / search
bind index,pager n search-next
bind index,pager N search-opposite
Attachments
bind attach l view-attach
bind attach h exit
bind attach q exit
bind attach <return> view-mailcap
macro attach W <save-entry><kill-line>~/Downloads/<enter>y "Save entry"
Compose
bind compose p postpone-message
bind compose R rename-attachment
bind compose a attach-file
Attach file using GUI File Manager
# macro compose A "<shell-escape>bash $HOME/.config/neomut/bin/attach-file.sh<enter><enter-command>source /tmp/muttpick<enter>" "Attach with GUI"
Write html emails using markdown
# macro compose M "F pandoc -s -f markdown -t html \ny^T^Utext/html; charset=us-ascii\n"
Open another instance of neomutt in readonly mode while composing
macro compose M "<shell-escape>termite -e \"neomutt -R\"<enter>"
Browser
bind browser l select-entry
macro browser h "<top-page><select-entry>"
bind browser q exit
bind index G bottom-page
bind index gg top-page
Generic
Enter Command
bind generic,index,pager : enter-command
Copy and move mails
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"
Sidebar
bind index,pager \Ck sidebar-prev
bind index,pager \Cj sidebar-next
bind index,pager \Cl sidebar-open
bind index,pager B sidebar-toggle-visible
Reload Configuration
macro generic,index,pager,editor ,<Space> ":source ~/.config/neomutt/neomuttrc\n" "Reload mutt's configuration file"
urlview - Open URL in emails
Use urlview
to extract urls from the mail.
macro attach,compose,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'
Searching using 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"
Colors
Basic colors
color normal color021 color000
color error color021 color000
color tilde color021 color000
color message color021 color000
color markers color021 color000
color attachment color021 color000
color search color000 color003
color status color016 color000
color indicator color000 color021
color tree color021 color000
color progress color000 color021
# basic monocolor screen
mono bold bold
mono underline underline
mono indicator reverse
mono error bold
Index
color index color021 color000 "~A" # All messages
color index brightcolor006 color000 "~N" # New messages
color index color020 color000 "~O" # Old messages
color index color020 color000 "~Q" # messages that have been replied to
color index color021 color000 "~R" # read messages
color index color006 color000 "~U" # unread messages
color index color021 color000 "~R~p!~F" # messages to me
color index brightcolor006 color000 "~N~p!~F" # new messages to me
color index brightcolor006 color000 "~U~p!~F" # unread messages to me
color index color005 color000 "~F" # flagged messages
color index color005 color000 "~F~p" # flagged messages to me
color index brightcolor006 color000 "~N~F" # new flagged messages
color index brightcolor006 color000 "~N~F~p" # new flagged messages to me
color index brightcolor006 color000 "~U~F~p" # new flagged messages to me
color index brightcolor000 color001 "~D" # deleted messages
color index brightcolor021 color019 "~v~(!~N)" # collapsed thread with no unread
color index brightcolor006 color019 "~v~(~N)" # collapsed thread with some unread
color index brightcolor006 color019 "~N~v~(~N)" # collapsed thread with unread parent
color index brightcolor005 color019 "~v~(~F)!~N" # collapsed thread with flagged, no unread
color index brightcolor006 color019 "~v~(~F~N)" # collapsed thread with some unread & flagged
color index brightcolor006 color019 "~N~v~(~F~N)" # collapsed thread with unread parent & flagged
color index brightcolor005 color019 "~N~v~(~F)" # collapsed thread with unread parent, no unread inside, but some flagged
color index brightcolor000 color001 "~v~(~D)" # thread with deleted (doesn't differentiate between all or partial)
Message headers
color hdrdefault color006 color000
color header brightcolor006 color000 "^(From)"
color header brightcolor004 color000 "^(Subject)"
Body
color quoted color002 color000
color quoted1 color003 color000
color quoted2 color004 color000
color quoted3 color005 color000
color quoted4 color006 color000
color signature color021 color000
color bold brightcolor021 color000
color underline brightcolor021 color000
color normal color021 color000
PGP
color body color001 color000 "(BAD signature)"
color body color002 color000 "(Good signature)"
color body color002 color000 "^gpg: Good signature .*"
color body color002 color000 "^gpg: "
color body color002 color000 "^gpg: BAD signature from.*"
Urls
color body color006 color000 "([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<>\"]"
Emails
color body color006 color000 "((@(([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]\\])"
Contacts with Mu
set query_command="mu cfind '%s' -o mutt-ab"
bind editor <Tab> complete-query
Paths
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/mailcap # entries for filetypes
set tmpdir = ~/.config/neomutt/temp # where to keep temp files
https://unix.stackexchange.com/questions/20456/pretty-print-mails-from-mutt
# set print_command="/usr/bin/muttprint %s -p ctb110c1u"
Accounts
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"
Gmail
Configuration
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"
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"
Signature
Thomas Dehaeze
This empty code block is used to add a new line after signatude
ESRF
Configuration
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"
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"
Signature
Thomas Dehaeze
This empty code block is used to add a new line after signatude
ULG
Configuration
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"
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"
Signature
Thomas Dehaeze
This empty code block is used to add a new line after signatude
Basic Options
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
# Use Vim to compose email, with a few default options.
set editor = "nvim -c '/\\n--' -c ':noh' -c 'startinsert' -c ':Goyo'"
View Options
Status Bar
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 )?───"
Index View Options
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"
Pager View Options
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
Compose View Options
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
Headers
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
Sidebar
General Config
# 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'
Mailboxes to show in the sidebar.
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
Attachments
Attachment View Options
set attach_format = "[%D %t] %2n [%-7.7m/%10.10M] %.40d %> [%s] "
Open Attachment
Program to open is defined in the mailcap
file.
A script openfile.sh
is used to open files with the default application using xdg-open
.
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
set abort_noattach = ask-yes
set abort_noattach_regex = "\\<(attach(|ed|ments?)|(attaché|attachés|attache|attachons|joint|jointe|joints|jointes|joins|joignons))\\>"
Scripts and other config files
Sync Mail script
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
Openfile Scripts
base=$(basename "$1")
ext="${base##*.}"
file=$(mktemp -u --suffix=".$ext")
rm -f "$file"
cp "$1" "$file"
setsid xdg-open "$file" >/dev/null 2>&1 &
urlview Config
REGEXP (((http|https|ftp|gopher)|mailto)[.:][^ >"\t]*|www\.[-a-z0-9.]+)[^ .,;\t>">\):]
COMMAND nohup qutebrowser %s </dev/null &>/dev/null &
Mailcap
Generic
text/plain; nvim %s
audio/*; /usr/bin/xdg-open %s; copiousoutput
video/*; setsid mpv --quiet %s &; copiousoutput
image/*; ~/.config/neomutt/bin/openfile.sh %s;
application/pdf; ~/.config/neomutt/bin/openfile.sh %s;
text/html; export DISPLAY=:0 && setsid qutebrowser %s; nametemplate=%s.html
text/html; w3m -I %{charset} -T text/html; copiousoutput;
text/calendar; khal import --batch -a home %s && khal printics %s; copiousoutput;
application/ics; khal import --batch -a home %s && khal printics %s; copiousoutput;
Libreoffice
application/docx; libreoffice %s --nologo &; copiousoutput;
application/doc; libreoffice --nologo %s &; copiousoutput;
application/vnd.oasis.opendocument.database; libreoffice --nologo --base '%s'; copiousoutput
application/vnd.oasis.opendocument.chart; libreoffice --nologo --calc '%s'; copiousoutput
application/vnd.oasis.opendocument.spreadsheet; libreoffice --nologo --calc '%s'; copiousoutput
application/vnd.oasis.opendocument.spreadsheet-template; libreoffice --nologo --calc '%s'; copiousoutput
application/vnd.oasis.opendocument.graphics; libreoffice --nologo --draw '%s'; copiousoutput
application/vnd.oasis.opendocument.graphics-template; libreoffice --nologo --draw '%s'; copiousoutput
application/vnd.oasis.opendocument.presentation; libreoffice --nologo --impress '%s'; copiousoutput
application/vnd.oasis.opendocument.presentation-template; libreoffice --nologo --impress '%s'; copiousoutput
application/vnd.oasis.opendocument.formula; libreoffice --nologo --math '%s'; copiousoutput
application/vnd.oasis.opendocument.text; libreoffice --nologo --writer '%s'; copiousoutput
application/vnd.oasis.opendocument.text-master; libreoffice --nologo -global '%s'; copiousoutput
application/vnd.oasis.opendocument.text-template; libreoffice --nologo --writer '%s'; copiousoutput
application/vnd.oasis.opendocument.text-web; libreoffice --nologo -web '%s'; copiousoutput
application/vnd.sun.xml.base; libreoffice --nologo --writer '%s'; copiousoutput
application/vnd.sun.xml.calc; libreoffice --nologo --calc '%s'; copiousoutput
application/vnd.sun.xml.calc.template; libreoffice --nologo --calc '%s'; copiousoutput
application/vnd.sun.xml.draw; libreoffice --nologo --draw '%s'; copiousoutput
application/vnd.sun.xml.draw.template; libreoffice --nologo --draw '%s'; copiousoutput
application/vnd.stardivision.calc; libreoffice --nologo --calc '%s'; copiousoutput
application/vnd.stardivision.chart; libreoffice --nologo --calc '%s'; copiousoutput
application/vnd.stardivision.draw; libreoffice --nologo --draw '%s'; copiousoutput
application/vnd.stardivision.impress; libreoffice --nologo --impress '%s'; copiousoutput
application/vnd.stardivision.math; libreoffice --nologo --math '%s'; copiousoutput
application/vnd.stardivision.writer-global; libreoffice --nologo --writer '%s'; copiousoutput
application/vnd.stardivision.writer; libreoffice --nologo --writer '%s'; copiousoutput
application/vnd.sun.xml.impress; libreoffice --nologo --impress '%s'; copiousoutput
application/vnd.sun.xml.impress.template; libreoffice --nologo --impress '%s'; copiousoutput
application/vnd.sun.xml.math; libreoffice --nologo --math '%s'; copiousoutput
application/vnd.sun.xml.writer; libreoffice --nologo --writer '%s'; copiousoutput
application/vnd.sun.xml.writer.global; libreoffice --nologo -global '%s'; copiousoutput
application/vnd.sun.xml.writer.template; libreoffice --nologo --writer '%s'; copiousoutput
text/csv; libreoffice --nologo --calc '%s'; copiousoutput
text/spreadsheet; libreoffice --nologo --calc '%s'; copiousoutput
application/x-quattropro; libreoffice --nologo --calc '%s'; copiousoutput
application/x-dbf; libreoffice --nologo --calc '%s'; copiousoutput
application/vnd.ms-excel.sheet.macroEnabled.12; libreoffice --nologo --calc '%s'; copiousoutput
application/vnd.ms-excel.template.macroEnabled.12; libreoffice --nologo --calc '%s'; copiousoutput
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; libreoffice --nologo --calc '%s'; copiousoutput
application/vnd.openxmlformats-officedocument.spreadsheetml.template; libreoffice --nologo --calc '%s'; copiousoutput
application/vnd.lotus-1-2-3; libreoffice --nologo --calc '%s'; copiousoutput
application/vnd.ms-excel; libreoffice --nologo --calc '%s'; copiousoutput
application/msexcel; libreoffice --nologo --calc '%s'; copiousoutput
application/x-dbase; libreoffice --nologo --calc '%s'; copiousoutput
text/x-csv; libreoffice --nologo --calc '%s'; copiousoutput
application/vnd.ms-powerpoint.presentation.macroEnabled.12; libreoffice --nologo --impress '%s'; copiousoutput
application/vnd.ms-powerpoint.slideshow.macroEnabled.12; libreoffice --nologo --impress '%s'; copiousoutput
application/vnd.ms-powerpoint.template.macroEnabled.12; libreoffice --nologo --impress '%s'; copiousoutput
application/vnd.openxmlformats-officedocument.presentationml.presentation; libreoffice --nologo --impress '%s'; copiousoutput
application/vnd.openxmlformats-officedocument.presentationml.slideshow; libreoffice --nologo --impress '%s'; copiousoutput
application/vnd.openxmlformats-officedocument.presentationml.template; libreoffice --nologo --impress '%s'; copiousoutput
application/vnd.ms-powerpoint; libreoffice --nologo --impress '%s'; copiousoutput
application/mspowerpoint; libreoffice --nologo --impress '%s'; copiousoutput
text/mathml; libreoffice --nologo --math '%s'; copiousoutput
application/rtf; libreoffice --nologo --writer '%s'; copiousoutput
application/x-t602; libreoffice --nologo --writer '%s'; copiousoutput
application/vnd.wordperfect; libreoffice --nologo --writer '%s'; copiousoutput
application/vnd.ms-word.document.macroEnabled.12; libreoffice --nologo --writer '%s'; copiousoutput
application/vnd.ms-word.template.macroEnabled.12; libreoffice --nologo --writer '%s'; copiousoutput
application/vnd.openxmlformats-officedocument.wordprocessingml.document; libreoffice --nologo --writer '%s'; copiousoutput
application/vnd.openxmlformats-officedocument.wordprocessingml.template; libreoffice --nologo --writer '%s'; copiousoutput
application/vnd.ms-works; libreoffice --nologo --writer '%s'; copiousoutput
application/msword; libreoffice --nologo --writer '%s'; copiousoutput
application/wordperfect; libreoffice --nologo --writer '%s'; copiousoutput
text/rtf; libreoffice --nologo --writer '%s'; copiousoutput