Mailctl: Difference between revisions

From wikinotes
 
Line 36: Line 36:
* configure services (ex. gmail) in <code>services.yaml</code>
* configure services (ex. gmail) in <code>services.yaml</code>


Initial Account Setup
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
# now you can authorize an email for a particular service
# now you can authorize an email for a particular service
mailctl authorize ${service} ${email}
# mailctl authorize ${service} ${email}
mailctl authorize gmail_family foo@gmail.com
open 'http://localhost:8080/start'
open 'http://localhost:8080/start'
# continue auth flow


# continue manual auth flow
</syntaxhighlight>


Obtain cached token
<syntaxhighlight lang="bash">
# once your service has been authorized once on this computer,
# once your service has been authorized once on this computer,
# you can manage access using 'access'
# you can manage access using 'access'
mailctl access ${email}
mailctl access foo@gmail.com
</syntaxhighlight>
 
You'll also need to periodically renew your token (put this in a cron job)
<syntaxhighlight lang="bash">
mailctl rewnew foo@gmail.com
</syntaxhighlight>
</syntaxhighlight>
</blockquote><!-- Usage -->
</blockquote><!-- Usage -->

Latest revision as of 14:59, 22 October 2022

mailctl provides IMAP/SMTP clients with the capabilities of renewal and authorization of OAuth2 credentials.

Documentation

github https://github.com/pdobsan/mailctl
config docs https://github.com/pdobsan/mailctl#configuration

Locations

$XDG_CONFIG_HOME/mailctl/config.yml config

Install

aura -A mailctl-bin
touch ~/.config/mailctl/config.yaml
touch ~/.config/mailctl/services.yaml
mkdir -p ~/.local/var/mailctl/

Usage

  • configure directories and gpg-access in config.yaml
  • configure services (ex. gmail) in services.yaml

Initial Account Setup

# now you can authorize an email for a particular service
# mailctl authorize ${service} ${email}
mailctl authorize gmail_family foo@gmail.com
open 'http://localhost:8080/start'

# continue manual auth flow

Obtain cached token

# once your service has been authorized once on this computer,
# you can manage access using 'access'
mailctl access foo@gmail.com

You'll also need to periodically renew your token (put this in a cron job)

mailctl rewnew foo@gmail.com

Configuration

Mailctl

# ~/.config/mailctl/config.yml
#
# annotated template: https://github.com/pdobsan/mailctl/blob/main/configs/config-template.yaml

# These four entries should be use for OAuth2 access method
services_file: /home/youruser/.config/mailctl/services.yaml
oauth2_dir: /home/youruser/.local/var/mailctl

# encrypt/decrypt with gpg (other options available)
encrypt_cmd:
  exec: gpg
  args:
    - --encrypt
    - --recipient
    - ${your_gpg_key_id}
    - -o
decrypt_cmd:
  exec: gpg
  args:
    - --decrypt

Services

Gmail

Each email should have it's own configuration (since each will have it's own id/secret).

create OAUTH tokens using instructions in gmail.

# ~/.config/mailctl/config.yml
#
# annotated template: https://github.com/pdobsan/mailctl/blob/main/configs/services-template.yaml
gmail_junk:
  auth_endpoint: https://accounts.google.com/o/oauth2/auth
  auth_http_method: POST
  auth_params_mode: query-string
  token_endpoint: https://accounts.google.com/o/oauth2/token
  token_http_method: POST
  token_params_mode: both
  redirect_uri: http://localhost:8080
  auth_scope: https://mail.google.com/
  client_id: XXXXXXXXXXXXXXXXXX
  client_secret: XXXXXXXXXXXXXXXXXX