2023-10-24 19:16:22 +02:00
<!doctype html>
< html lang = "en" >
< head >
< meta charset = "UTF-8" / >
< meta name = "viewport" content = "width=device-width, initial-scale=1" / >
< link href = "/css/style.css" rel = "stylesheet" / >
2024-03-09 14:59:52 +01:00
< script defer data-domain = "cronyakatsuki.xyz" src = "https://plausible.cronyakatsuki.xyz/js/script.js" > < / script >
2023-10-24 19:16:22 +02:00
2024-01-28 18:16:34 +01:00
< title >
Virgin (Neo)Mutt User Meet Mblaze - Crony Akatsuki
< / title >
2024-04-27 18:22:09 +02:00
< meta property = "og:url" content = "https://cronyakatsuki.xyz/blog/virgin-mutt-user-meet-mblaze/" >
< meta property = "og:site_name" content = "Crony Akatsuki's Website" >
< meta property = "og:title" content = "Virgin (Neo)Mutt User Meet Mblaze" >
2024-05-06 18:27:21 +02:00
< meta property = "og:description" content = "We have all heard of (Neo)Mutt when it comes to managing e-mail in the terminal right? What would you do if I told you there is an even better and more UNIX way to manage mail on the terminal? Well there is and it’ s called mblaze." >
2024-10-30 20:19:32 +01:00
< meta property = "og:locale" content = "en_us" >
2024-04-27 18:22:09 +02:00
< meta property = "og:type" content = "article" >
2024-05-06 18:27:21 +02:00
< meta property = "article:section" content = "blog" >
2024-04-27 18:22:09 +02:00
< meta property = "article:published_time" content = "2023-10-24T18:13:18+02:00" >
< meta property = "article:modified_time" content = "2023-10-24T18:13:18+02:00" >
< meta property = "article:tag" content = "Linux" >
< meta property = "article:tag" content = "Mail" >
< meta property = "article:tag" content = "Mblaze" >
2023-10-24 19:16:22 +02:00
< / head >
< body >
< header >
< h1 > Crony Akatsuki< / h1 >
< nav >
< span > < a href = "/" > Home< / a > < / span >
< span > |< / span >
< span > < a href = "/about" > About< / a > < / span >
< span > |< / span >
< span > < a href = "/blog" > Blog< / a > < / span >
< span > |< / span >
< span > < a href = "/services" > Services< / a > < / span >
< / nav >
< / header >
< main >
< div id = "content" >
< h1 > Virgin (Neo)Mutt User Meet Mblaze< / h1 >
< div id = "blog-meta" >
< p id = "date" > 24-10-2023< / p >
2024-01-07 14:46:55 +01:00
< p >
< span > |< / span >
< a href = "https://cronyakatsuki.xyz/tags/linux/" > linux< / a > < span > |< / span >
< a href = "https://cronyakatsuki.xyz/tags/mail/" > mail< / a > < span > |< / span >
< a href = "https://cronyakatsuki.xyz/tags/mblaze/" > mblaze< / a > < / p >
2023-10-24 19:16:22 +02:00
< hr >
< / div >
< p > We have all heard of (Neo)Mutt when it comes to managing e-mail in the terminal right? What would you do if I told you there is an even better and more UNIX way to manage mail on the terminal? Well there is and it’ s called < a href = "https://github.com/leahneukirchen/mblaze" > mblaze< / a > .< / p >
< p > In this post I will explain to you how to setup mblaze for managing your email, but for that we will 2 more additional software to manage our mail with mblaze. < a href = "https://www.opensmtpd.org/" > OpenSMTPD< / a > the openbsd fast mail server for getting local mail from services like crontab and sending mail with, and < a href = "https://isync.sourceforge.io/" > isync< / a > for downloading our mail from our remote server’ s either selfhosted or gmail.< / p >
< h1 id = "1-opensmtpd" > 1. OpenSMTPD< / h1 >
< p > First we will setup OpenSMTP for local mail, and we will also relay’ s that allow us to send e-mail from our selfhosted or gmail mail server’ s for example. Make sure to install opensmtpd from your package maanager.< / p >
< blockquote >
< p > Edit < code > /etc/smtpd/smtpd.conf< / code > < / p >
< / blockquote >
< pre tabindex = "0" > < code class = "language-conf" data-lang = "conf" > table aliases file:/etc/mail/aliases
table credentials file:/etc/mail/credentials
listen on 127.0.0.1
action " local_mail" maildir " /home/%{user.username}/.local/share/Maildir/local" alias < aliases>
action outbound_selfhost relay host smtp+tls://selfhost@subdomain.domain.com:587 auth < credentials>
action outbound_gmail relay host smtp+tls://gmail@smtp.gmail.com:587 auth < credentials>
match for local action " local_mail"
match mail-from " selfhost@domain.com" for any action outbound_selfhost
match mail-from " username@gmail.com" for any action outbound_gmail
< / code > < / pre > < p > Next you will need to update aliases in file /etc/mail/aliases under the comment < code > # Well-known aliases -- these should be filled in!< / code > to your main user account on your system.< / p >
< p > Now we will also setup the passwords in the < code > /etc/mail/credentials< / code > , Note for gmail you will need to setup app password for it to be usable with this method and enable smtp in gmail.< / p >
< pre tabindex = "0" > < code class = "language-conf" data-lang = "conf" > selfhost selfhost:selfhost_password
gmail gmail:gmail_password
< / code > < / pre > < p > Also make sure to run < code > sudo chmod 600 /etc/mail/credentials< / code > to make sure the password’ s aren’ t readable if you aren’ t running as sudo.< / p >
< h1 id = "2-isync" > 2. isync< / h1 >
< p > Now we will setup isync to get our e-mail from our server’ s. In this example there is both settings for a selfhosted server and a gmail one.< / p >
< blockquote >
< p > Edit < code > $HOME/.mbsyncrc< / code > < / p >
< / blockquote >
< pre tabindex = "0" > < code class = "language-rc" data-lang = "rc" > IMAPStore selfhost-remote
Host subdomain.domain.com
Port 993
User selfhost@domain.com
PassCmd " Command for password" or Pass password
SSLType IMAPS
CertificateFile /etc/ssl/certs/ca-certificates.crt
MaildirStore selfhost-local
Path ~/.local/share/Maildir/selfhost/
Inbox ~/.local/share/Maildir/selfhost/INBOX
SubFolders Verbatim
Channel selfhost
Far :selfhost-remote:
Near :selfhost-local:
Create Both
Expunge Both
Patterns * !" [Gmail]/All Mail" !" *fts-flatcurve*" !" *virtual*"
SyncState *
Create Both
IMAPStore gmail-remote
Host imap.gmail.com
Port 993
User gmail@gmail.com
PassCmd " Command for password" or Pass password
SSLType IMAPS
CertificateFile /etc/ssl/certs/ca-certificates.crt
MaildirStore gmail-local
Path ~/.local/share/Maildir/gmail/
Inbox ~/.local/share/Maildir/gmail/INBOX
SubFolders Verbatim
Channel gmail
Far :gmail-remote:
Near :gmail-local:
Create Both
Expunge Both
Patterns * !" [Gmail]/All Mail" !" *fts-flatcurve*" !" *virtual*"
SyncState *
Create Both
< / code > < / pre > < p > Then you can run < code > mbsync -V gmail/selfhost< / code > to sync a specific account or you can run < code > mbsync -a< / code > to sync all your account’ s.< / p >
< h1 id = "3-mblaze" > 3. mblaze< / h1 >
< p > Now we will start working on the most juicy part, setting up mblaze for basic usage. First we will setup a basic mblaze profile for our local account.< / p >
< blockquote >
< p > Edit < code > $HOME/.mblaze/profile< / code > < / p >
< / blockquote >
< pre tabindex = "0" > < code class = "language-conf" data-lang = "conf" > Local-Mailbox: user
FQDN: " Generate using command mgenmid"
2023-10-24 19:26:18 +02:00
Maildir: /home/USER/.local/share/Maildir/local
Outbox: /home/USER/.local/share/Maildir/local/Sent/
Drafts: /home/USER/.local/share/Maildir/local/Drafts/
2023-10-24 19:16:22 +02:00
Reply-From: user
# You don' t need this, it just makes it easier to see date
Scan-Format: %c%u%r %-3n %10d %17f %t %2i%s
< / code > < / pre > < p > And now we are ready for using mblaze for managing our local mail with mblaze. Now for the rest of this blog I will show how I manage multiple account’ s using a scipt and a couple function’ s. I will also link a video that will show you in more detail things for using mblaze for managing your mail which was my inspiration for making this post.< / p >
< h1 id = "4-multiple-profiles-management" > 4. Multiple profiles management< / h1 >
< p > You can do this in a lot of ways with mblaze since it is very easily scriptable, but I do it with a script that copies over a preconfigure profile from < code > $HOME/.config/mblaze< / code > < / p >
< blockquote >
< p > example selfhost mblaze config < code > $HOME/.config/mblaze/selfhost< / code > < / p >
< / blockquote >
< pre tabindex = "0" > < code class = "language-conf" data-lang = "conf" > Local-Mailbox: User Name < user@domain.com>
FQDN: " Generate using command mgenmid"
2023-10-24 19:23:55 +02:00
Maildir: /home/USER/.local/share/Maildir/selfhost
Outbox: /home/USER/.local/share/Maildir/selfhost/Sent/
Drafts: /home/USER/.local/share/Maildir/selfhost/Drafts/
2023-10-24 19:16:22 +02:00
Reply-From: User Name < user@domain.com>
Scan-Format: %c%u%r %-3n %10d %17f %t %2i%s
< / code > < / pre > < blockquote >
< p > example gmail mblaze config < code > $HOME/.config/mblaze/gmail< / code > < / p >
< / blockquote >
< pre tabindex = "0" > < code class = "language-conf" data-lang = "conf" > Local-Mailbox: user < user@gmail.com>
FQDN: " Generate using command mgenmid"
2023-10-24 19:23:55 +02:00
Maildir: /home/USER/.local/share/Maildir/gmail
Outbox: /home/USER/.local/share/Maildir/gmail/[Gmail]/Sent Mail
Drafts: /home/USER/.local/share/Maildir/gmail/[Gmail]/Drafts
2023-10-24 19:16:22 +02:00
Reply-From: user < user@gmail.com>
Scan-Format: %c%u%r %-3n %10d %17f %t %2i%s
< / code > < / pre > < p > For the local profile, just copy the config saved to < code > $HOME/.mblaze/profile< / code > to < code > $HOME/.config/mblaze/local< / code > .< / p >
< p > Now onto the script and functions I use with my zsh.< / p >
< blockquote >
< p > mprofile< / p >
< / blockquote >
< div class = "highlight" > < pre tabindex = "0" style = "color:#c6d0f5;background-color:#303446;-moz-tab-size:4;-o-tab-size:4;tab-size:4;" > < code class = "language-bash" data-lang = "bash" > < span style = "display:flex;" > < span > < span style = "color:#737994;font-style:italic" > #!/bin/sh
< / span > < / span > < / span > < span style = "display:flex;" > < span > < span style = "color:#737994;font-style:italic" > < / span >
< / span > < / span > < span style = "display:flex;" > < span > < span style = "color:#f2d5cf" > profiles< / span > < span style = "color:#99d1db;font-weight:bold" > =< / span > < span style = "color:#ca9ee6" > $(< / span > find < span style = "color:#a6d189" > " < / span > < span style = "color:#f2d5cf" > $HOME< / span > < span style = "color:#a6d189" > " < / span > /.config/mblaze -type f -exec basename < span style = "color:#a6d189" > " {}" < / span > < span style = "color:#8caaee" > \;< / span > < span style = "color:#ca9ee6" > )< / span >
< / span > < / span > < span style = "display:flex;" > < span > < span style = "color:#f2d5cf" > currentMaildir< / span > < span style = "color:#99d1db;font-weight:bold" > =< / span > < span style = "color:#ca9ee6" > $(< / span > grep < span style = "color:#a6d189" > " ^Maildir:" < / span > < span style = "color:#a6d189" > " < / span > < span style = "color:#f2d5cf" > $HOME< / span > < span style = "color:#a6d189" > " < / span > /.mblaze/profile | cut -d: -f < span style = "color:#ef9f76" > 2< / span > | sed < span style = "color:#a6d189" > ' s/ //g' < / span > < span style = "color:#ca9ee6" > )< / span >
< / span > < / span > < span style = "display:flex;" > < span >
< / span > < / span > < span style = "display:flex;" > < span > < span style = "color:#99d1db;font-weight:bold" > [< / span > -z < span style = "color:#a6d189" > " < / span > < span style = "color:#f2d5cf" > $1< / span > < span style = "color:#a6d189" > " < / span > < span style = "color:#99d1db;font-weight:bold" > ]< / span > < span style = "color:#99d1db;font-weight:bold" > & & < / span > basename < span style = "color:#a6d189" > " < / span > < span style = "color:#ca9ee6" > $(< / span > grep -w < span style = "color:#a6d189" > " < / span > < span style = "color:#f2d5cf" > $currentMaildir< / span > < span style = "color:#a6d189" > " < / span > -l -R < span style = "color:#a6d189" > " < / span > < span style = "color:#f2d5cf" > $HOME< / span > < span style = "color:#a6d189" > " < / span > /.config/mblaze< span style = "color:#ca9ee6" > )< / span > < span style = "color:#a6d189" > " < / span > < span style = "color:#99d1db;font-weight:bold" > & & < / span > < span style = "color:#99d1db" > exit< / span > < span style = "color:#ef9f76" > 0< / span >
< / span > < / span > < span style = "display:flex;" > < span > < span style = "color:#99d1db;font-weight:bold" > [< / span > < span style = "color:#a6d189" > " < / span > < span style = "color:#f2d5cf" > $1< / span > < span style = "color:#a6d189" > " < / span > < span style = "color:#99d1db;font-weight:bold" > =< / span > < span style = "color:#a6d189" > " -l" < / span > < span style = "color:#99d1db;font-weight:bold" > ]< / span > < span style = "color:#99d1db;font-weight:bold" > & & < / span > < span style = "color:#99d1db" > printf< / span > < span style = "color:#a6d189" > ' %s\n' < / span > < span style = "color:#a6d189" > " < / span > < span style = "color:#f2d5cf" > $profiles< / span > < span style = "color:#a6d189" > " < / span > < span style = "color:#99d1db;font-weight:bold" > & & < / span > < span style = "color:#99d1db" > exit< / span > < span style = "color:#ef9f76" > 0< / span >
< / span > < / span > < span style = "display:flex;" > < span >
< / span > < / span > < span style = "display:flex;" > < span > < span style = "color:#f2d5cf" > profile< / span > < span style = "color:#99d1db;font-weight:bold" > =< / span > < span style = "color:#a6d189" > " < / span > < span style = "color:#f2d5cf" > $1< / span > < span style = "color:#a6d189" > " < / span >
< / span > < / span > < span style = "display:flex;" > < span >
< / span > < / span > < span style = "display:flex;" > < span > < span style = "color:#ca9ee6" > if< / span > < span style = "color:#99d1db" > printf< / span > < span style = "color:#a6d189" > ' %s\n' < / span > < span style = "color:#a6d189" > " < / span > < span style = "color:#f2d5cf" > $profiles< / span > < span style = "color:#a6d189" > " < / span > | grep -qw < span style = "color:#a6d189" > " < / span > < span style = "color:#f2d5cf" > $profile< / span > < span style = "color:#a6d189" > " < / span > ; < span style = "color:#ca9ee6" > then< / span >
< / span > < / span > < span style = "display:flex;" > < span > cp < span style = "color:#a6d189" > " < / span > < span style = "color:#f2d5cf" > $HOME< / span > < span style = "color:#a6d189" > " < / span > /.config/mblaze/< span style = "color:#a6d189" > " < / span > < span style = "color:#f2d5cf" > $profile< / span > < span style = "color:#a6d189" > " < / span > < span style = "color:#a6d189" > " < / span > < span style = "color:#f2d5cf" > $HOME< / span > < span style = "color:#a6d189" > " < / span > /.mblaze/profile
< / span > < / span > < span style = "display:flex;" > < span > < span style = "color:#ca9ee6" > else< / span >
< / span > < / span > < span style = "display:flex;" > < span > < span style = "color:#99d1db" > printf< / span > < span style = "color:#a6d189" > ' %s\n' < / span > < span style = "color:#a6d189" > " This profile doesn' t exist" < / span >
< / span > < / span > < span style = "display:flex;" > < span > < span style = "color:#ca9ee6" > fi< / span >
< / span > < / span > < / code > < / pre > < / div > < p > The script is able to print the current profile when run without argument, listing all available profiles using -l and setting the profile by providing it’ s name.< / p >
< blockquote >
< p > functions< / p >
< / blockquote >
< div class = "highlight" > < pre tabindex = "0" style = "color:#c6d0f5;background-color:#303446;-moz-tab-size:4;-o-tab-size:4;tab-size:4;" > < code class = "language-bash" data-lang = "bash" > < span style = "display:flex;" > < span > < span style = "color:#737994;font-style:italic" > # mblaze functions< / span >
< / span > < / span > < span style = "display:flex;" > < span >
< / span > < / span > < span style = "display:flex;" > < span > < span style = "color:#737994;font-style:italic" > # Get new mail for current profile< / span >
2024-01-07 14:46:55 +01:00
< / span > < / span > < span style = "display:flex;" > < span > < span style = "color:#ca9ee6" > function< / span > mnew < span style = "color:#99d1db;font-weight:bold" > ()< / span > < span style = "color:#99d1db;font-weight:bold" > {< / span >
2023-10-24 19:16:22 +02:00
< / span > < / span > < span style = "display:flex;" > < span > < span style = "color:#f2d5cf" > maildir< / span > < span style = "color:#99d1db;font-weight:bold" > =< / span > < span style = "color:#ca9ee6" > $(< / span > grep < span style = "color:#a6d189" > " ^Maildir:" < / span > < span style = "color:#f2d5cf" > $HOME< / span > /.mblaze/profile | cut -d: -f < span style = "color:#ef9f76" > 2< / span > | sed < span style = "color:#a6d189" > ' s/ //g' < / span > < span style = "color:#ca9ee6" > )< / span >
< / span > < / span > < span style = "display:flex;" > < span > < span style = "color:#f2d5cf" > profile< / span > < span style = "color:#99d1db;font-weight:bold" > =< / span > < span style = "color:#ca9ee6" > $(< / span > basename < span style = "color:#f2d5cf" > $maildir< / span > < span style = "color:#ca9ee6" > )< / span >
< / span > < / span > < span style = "display:flex;" > < span > < span style = "color:#ca9ee6" > if< / span > < span style = "color:#99d1db;font-weight:bold" > [< / span > < span style = "color:#a6d189" > " < / span > < span style = "color:#f2d5cf" > $profile< / span > < span style = "color:#a6d189" > " < / span > < span style = "color:#99d1db;font-weight:bold" > =< / span > < span style = "color:#a6d189" > " local" < / span > < span style = "color:#99d1db;font-weight:bold" > ]< / span > ; < span style = "color:#ca9ee6" > then< / span >
< / span > < / span > < span style = "display:flex;" > < span > mlist -s < span style = "color:#a6d189" > " < / span > < span style = "color:#f2d5cf" > $maildir< / span > < span style = "color:#a6d189" > " < / span > | msort -dr | mseq -S
< / span > < / span > < span style = "display:flex;" > < span > < span style = "color:#ca9ee6" > else< / span >
< / span > < / span > < span style = "display:flex;" > < span > mbsync -V < span style = "color:#f2d5cf" > $profile< / span >
< / span > < / span > < span style = "display:flex;" > < span > mlist -s < span style = "color:#a6d189" > " < / span > < span style = "color:#f2d5cf" > $maildir< / span > < span style = "color:#a6d189" > " < / span > /INBOX | msort -dr | mseq -S
2024-01-07 14:46:55 +01:00
< / span > < / span > < span style = "display:flex;" > < span > minc < span style = "color:#a6d189" > " < / span > < span style = "color:#f2d5cf" > $maildir< / span > < span style = "color:#a6d189" > /INBOX" < / span > > /dev/null
2023-10-24 19:16:22 +02:00
< / span > < / span > < span style = "display:flex;" > < span > < span style = "color:#ca9ee6" > fi< / span >
< / span > < / span > < span style = "display:flex;" > < span > < span style = "color:#99d1db;font-weight:bold" > }< / span >
< / span > < / span > < span style = "display:flex;" > < span >
< / span > < / span > < span style = "display:flex;" > < span > < span style = "color:#737994;font-style:italic" > # Get full mail for current profile including threads< / span >
2024-01-07 14:46:55 +01:00
< / span > < / span > < span style = "display:flex;" > < span > < span style = "color:#ca9ee6" > function< / span > mall < span style = "color:#99d1db;font-weight:bold" > ()< / span > < span style = "color:#99d1db;font-weight:bold" > {< / span >
2023-10-24 19:16:22 +02:00
< / span > < / span > < span style = "display:flex;" > < span > < span style = "color:#f2d5cf" > maildir< / span > < span style = "color:#99d1db;font-weight:bold" > =< / span > < span style = "color:#ca9ee6" > $(< / span > grep < span style = "color:#a6d189" > " ^Maildir:" < / span > < span style = "color:#f2d5cf" > $HOME< / span > /.mblaze/profile | cut -d: -f < span style = "color:#ef9f76" > 2< / span > | sed < span style = "color:#a6d189" > ' s/ //g' < / span > < span style = "color:#ca9ee6" > )< / span >
< / span > < / span > < span style = "display:flex;" > < span > < span style = "color:#f2d5cf" > sent< / span > < span style = "color:#99d1db;font-weight:bold" > =< / span > < span style = "color:#ca9ee6" > $(< / span > grep < span style = "color:#a6d189" > " ^Outbox:" < / span > < span style = "color:#f2d5cf" > $HOME< / span > /.mblaze/profile | cut -d: -f < span style = "color:#ef9f76" > 2< / span > | sed < span style = "color:#a6d189" > ' s/ //g' < / span > < span style = "color:#ca9ee6" > )< / span >
< / span > < / span > < span style = "display:flex;" > < span > < span style = "color:#f2d5cf" > profile< / span > < span style = "color:#99d1db;font-weight:bold" > =< / span > < span style = "color:#ca9ee6" > $(< / span > basename < span style = "color:#f2d5cf" > $maildir< / span > < span style = "color:#ca9ee6" > )< / span >
< / span > < / span > < span style = "display:flex;" > < span > < span style = "color:#ca9ee6" > if< / span > < span style = "color:#99d1db;font-weight:bold" > [< / span > < span style = "color:#a6d189" > " < / span > < span style = "color:#f2d5cf" > $profile< / span > < span style = "color:#a6d189" > " < / span > < span style = "color:#99d1db;font-weight:bold" > =< / span > < span style = "color:#a6d189" > " local" < / span > < span style = "color:#99d1db;font-weight:bold" > ]< / span > ; < span style = "color:#ca9ee6" > then< / span >
< / span > < / span > < span style = "display:flex;" > < span > mlist < span style = "color:#a6d189" > " < / span > < span style = "color:#f2d5cf" > $maildir< / span > < span style = "color:#a6d189" > " < / span > | mthread -r -S < span style = "color:#a6d189" > " < / span > < span style = "color:#f2d5cf" > $maildir< / span > < span style = "color:#a6d189" > " < / span > | mseq -S
< / span > < / span > < span style = "display:flex;" > < span > < span style = "color:#ca9ee6" > else< / span >
< / span > < / span > < span style = "display:flex;" > < span > mbsync -V < span style = "color:#f2d5cf" > $profile< / span >
< / span > < / span > < span style = "display:flex;" > < span > mlist < span style = "color:#a6d189" > " < / span > < span style = "color:#f2d5cf" > $maildir< / span > < span style = "color:#a6d189" > " < / span > /INBOX | mthread -r -S < span style = "color:#a6d189" > " < / span > < span style = "color:#f2d5cf" > $sent< / span > < span style = "color:#a6d189" > " < / span > | mseq -S
2024-01-07 14:46:55 +01:00
< / span > < / span > < span style = "display:flex;" > < span > minc < span style = "color:#a6d189" > " < / span > < span style = "color:#f2d5cf" > $maildir< / span > < span style = "color:#a6d189" > /INBOX" < / span > > /dev/null
2023-10-24 19:16:22 +02:00
< / span > < / span > < span style = "display:flex;" > < span > < span style = "color:#ca9ee6" > fi< / span >
< / span > < / span > < span style = "display:flex;" > < span > < span style = "color:#99d1db;font-weight:bold" > }< / span >
< / span > < / span > < / code > < / pre > < / div > < p > For the rest of usage of mblaze, I really recommend to use < code > man mblaze< / code > since the software is really well documented, or you can also watch this < a href = "https://piped.cronyakatsuki.xyz/watch?v=5YS8RPC4zwc" > video< / a > I took the inspiration from for this setup.< / p >
< h1 id = "conclusion" > Conclusion< / h1 >
< p > Hope you have had a good read, and I hope you will maybe try out this mail setup, or create your own even better setup for your self.< / p > < / div >
< / main >
< footer >
< div id = "links" >
< span > < a href = "https://code.cronyakatsuki.xyz" > Code< / a > < / span >
< span > |< / span >
< span > < a href = "https://steamcommunity.com/id/CronyAkatsuki/" > Steam< / a > < / span >
< span > |< / span >
< span > < a href = "https://osu.ppy.sh/users/18953565" > Osu!< / a > < / span >
< span > |< / span >
< span > < a href = "https://anilist.co/user/CronyAkatsuki/" > Anilist< / a > < / span >
< span > |< / span >
2024-03-19 20:48:16 +01:00
< span > < a href = "https://trakt.tv/users/cronyakatsuki" > Trakt.tv< / a > < / span >
< span > |< / span >
< span > < a href = "https://www.last.fm/user/Crony-Akatsuki" > Last.fm< / a > < / span >
< span > |< / span >
2023-10-24 19:16:22 +02:00
< span > < a href = "https://youtube.com/channel/UClFdlNlUipHG5Kit8GbFz5Q" > Gaming Channel< / a > < / span >
2023-11-07 19:47:47 +01:00
< span > |< / span >
< span > < a href = "https://uptime.cronyakatsuki.xyz/status/public" > Services Status< / a > < / span >
2023-12-17 11:17:57 +01:00
< span > |< / span >
< span > < a href = "https://lemmy.cronyakatsuki.xyz/u/crony" > Lemmy< / a > < / span >
2024-03-09 17:46:18 +01:00
< span > |< / span >
2024-03-19 20:48:16 +01:00
< span > < a href = "https://sharkey.cronyakatsuki.xyz/u/crony" > Sharkey< / a > < / span >
< span > |< / span >
2024-03-09 17:46:18 +01:00
< span > < a href = "https://plausible.cronyakatsuki.xyz/cronyakatsuki.xyz" > Selfhosted Plausible Analytics< / a > < / span >
2023-10-24 19:16:22 +02:00
< / div >
< div id = "banners" >
< a rel = "noreferrer" href = "/" target = "_blank" > < img src = "/88x31.png"
alt="Me" title="Me" />< / a >
< a rel = "noreferrer" href = "https://kernel.org" target = "_blank" > < img src = "https://cyber.dabamos.de/88x31/linux_powered.gif"
alt="linux kernel" title="Best kernel in the world" />< / a >
< a rel = "noreferrer" href = "https://debian.org" target = "_blank" > < img src = "https://cyber.dabamos.de/88x31/debian.gif"
alt="debian" title="This website run's on debian" />< / a >
< a rel = "noreferrer" href = "https://bitwarden.com" target = "_blank" > < img src = "https://cyber.dabamos.de/88x31/bitwarden.gif"
alt="Bitwarden" title="Bitwarden/Vaultwarden for the win" />< / a >
< a rel = "noreferrer" target = "_blank" > < img src = "https://cyber.dabamos.de/88x31/free.gif"
alt="foss" title="Foss is the way" />< / a >
< a rel = "noreferrer" href = "https://neovim.io" target = "_blank" > < img src = "/assets/badges/neovim.gif"
alt="Neovim" title="Written in neovim" />< / a >
< a rel = "noreferrer" href = "https://landchad.net" target = "_blank" > < img src = "https://landchad.net/pix/landchad.gif"
alt="LandChad" title="Get A Website!" />< / a >
< a rel = "noreferrer" href = "https://poggerer.xyz" target = "_blank" > < img src = "https://poggerer.xyz/88x31.png"
alt="Tulg" title="Tulg" />< / a >
< a rel = "noreferrer" href = "https://arthurmelton.com" target = "_blank" > < img src = "https://arthurmelton.com/88x31.png"
alt="AMTitan" title="AMTitan" />< / a >
< a rel = "noreferrer" href = "https://aadi.net.in" target = "_blank" > < img src = "https://aadi.net.in/88x31.png"
alt="Aadi" title="Aadi" />< / a >
< a rel = "noreferrer" href = "https://bear.oops.wtf/" target = "_blank" > < img src = "https://bear.oops.wtf/download/88x31.png"
alt="Bear" title="Bear" />< / a >
< / div >
< / footer >
< / body >
< / html >