#+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 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~UN." "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 "$HOME/.config/neomutt/bin/get_new_mail.sh" macro index,pager O "$HOME/.config/neomutt/bin/get_new_mail.sh all" #+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 a message to a mailbox" macro index M "?" "move a message to a mailbox" #+END_SRC *** Quickly change mailboxes #+BEGIN_SRC conf macro index,pager c "?" "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' -" "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 "html" #+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 " goobook add" "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 "termite -e \"neomutt -R\"" #+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 view-mailcap macro attach W ~/Downloads/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]>" # #color body brightblack default "<[Bb][Gg]>" # #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 ** Searching using Mu #+begin_src conf # mutt macros for mu macro index,pager \Cf "mu find --clearlinks --format=links --linksdir=~/.mail/search " \ "mu find" macro index,pager gf "~/.mail/search" \ "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 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 [#A] 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 "+ulg/Inbox" "go to inbox" macro index,pager ge "+esrf/Inbox" "go to inbox" macro index,pager gm "+gmail/Inbox" "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 \ "+gmail/Archive" \ "Move message to the Archive" macro index,pager D \ "+gmail/Trash" \ "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 \ "+esrf/Archive" \ "Move message to the Archive" macro index,pager D \ "+esrf/Trash" \ "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 \ "+ulg/Archive" \ "Move message to the Archive" macro index,pager D \ "+ulg/Trash" \ "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 % %?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 == 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 "bash $HOME/.config/neomut/bin/attach-file.shsource /tmp/muttpick" "Attach with GUI" #+END_SRC *** Cheatsheet | Command | Usage | |---------+---------------| | == | 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.