{"id":18795524,"url":"https://github.com/fmenabe/muttrc","last_synced_at":"2025-12-30T06:30:15.143Z","repository":{"id":147368489,"uuid":"13060569","full_name":"fmenabe/muttrc","owner":"fmenabe","description":"My mutt configuration.","archived":false,"fork":false,"pushed_at":"2018-03-01T22:49:08.000Z","size":13,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-12-29T16:54:55.574Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fmenabe.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-09-24T09:50:18.000Z","updated_at":"2018-05-25T23:05:29.000Z","dependencies_parsed_at":null,"dependency_job_id":"8a03f892-3110-4dbf-9d01-c59054454a81","html_url":"https://github.com/fmenabe/muttrc","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fmenabe%2Fmuttrc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fmenabe%2Fmuttrc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fmenabe%2Fmuttrc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fmenabe%2Fmuttrc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fmenabe","download_url":"https://codeload.github.com/fmenabe/muttrc/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239720054,"owners_count":19686045,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-07T21:34:24.001Z","updated_at":"2025-12-30T06:30:15.105Z","avatar_url":"https://github.com/fmenabe.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"======\nmuttrc\n======\n\nAs I don't like the way mutt manage mutliple mailboxes, I launch one mutt per mailbox and\nuse shell aliases to link configuration files to commands. Each mailbox has its own\nconfiguration file for specific configuration (like IMAP and SMTP parameters) that source\nthe common configuration file *common.muttrc*.\n\nMailboxes configuration files source a GPG encrypted file that store the password in the\nformat: ``set my_pass=XXXX``.\n\nGPG configuration\n=================\nFor not having to input the GPG passphrase each time mutt is started, I configured\n``gpg-agent`` to cache unlocked keys for one day and use ``keychain`` to unlock the\npassphrase at boot (like the SSH key).\n\n.. code::\n\n    +[=100% (83.45%)] [01:20] francois@zen:~ ¤ vim .gnupg/gpg-agent.conf\n    # Force passphrase to be asked in console.\n    pinentry-program /usr/bin/pinentry-tty\n\n    # Update cache ttl (1 day so it should live a session).\n    default-cache-ttl 86400\n    max-cache-ttl 86400\n\n    +[=100% (83.45%)] [01:20] francois@zen:~ ¤ gpg -k\n    /home/francois/.gnupg/pubring.kbx\n    ---------------------------------\n    pub   rsa2048 2017-09-13 [SC] [expires: 2019-09-13]\n          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n    uid           [ unknown] Francois Menabe \u003cfrancois.menabe@gmail.com\u003e\n    sub   rsa2048 2017-09-13 [E] [expires: 2019-09-13]\n\n    +[=100% (83.45%)] [01:20] francois@zen:~ ¤ vim .bashrc\n    ...\n    # Unlock SSH private key.\n    eval $(keychain --eval --agents ssh -Q --quiet --nogui id_rsa)\n    # Unlock GPG key.\n    eval $(keychain --eval --agents gpg -Q --quiet --nogui XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX)\n    ...\n\n    +[=100% (83.45%)] [01:20] francois@zen:~ ¤ vim .mutt/unistra\n    set my_pass = \"xxxx\"\n    +[=100% (83.45%)] [01:20] francois@zen:~ ¤ gpg -r francois.menabe@gmail.com -e .mutt/unistra\n    # it generate encrypted file .mutt/unistra.gpg\n    +[=100% (83.45%)] [01:20] francois@zen:~ ¤ shred .mutt/unistra\n    +[=100% (83.45%)] [01:20] francois@zen:~ ¤ rm .mutt/unistra\n\n    # Same commands for generating gmail password variable.\n\nUnistra address book\n====================\n\nThe *mutt_ldap.py* Python3 script allows to query Unistra address book LDAP server. As\npassword is already crypted by GPG, this script use ``python-gnupg`` password to retrieve\nit. So the dependencies for this script are:\n\n    * python-pyldap (Python3 binding to libldap)\n    * python-gnupg\n\nDeployment\n==========\nA simple Makefile has been created that copy all the files to *.mutt* directory.\n\n.. code::\n\n    +[=100% (83.45%)] [18:13] francois@zen:muttrc ¤ make\n    mkdir -p ~/.mutt\n    cp common.muttrc unistra.muttrc gmail.muttrc mutt-colors-solarized-light-256.muttrc vimrc signature mailcap mutt_ldap.py ~/.mutt\n    mkdir -p ~/.cache/mutt\n    mkdir -p ~/.cache/mutt/unistra\n    mkdir -p ~/.cache/mutt/gmail\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffmenabe%2Fmuttrc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffmenabe%2Fmuttrc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffmenabe%2Fmuttrc/lists"}