speedtech-website/public/en/blog/encrypt-compress-email-server/index.html
2025-12-12 18:05:59 +01:00

95 lines
No EOL
24 KiB
HTML

<!doctype html><html lang=en><head><meta charset=utf-8><meta name=robots content="all,follow"><meta name=googlebot content="index,follow,snippet,archive"><meta name=viewport content="width=device-width,initial-scale=1"><title>SpeedTech | Blog - Encrypt and compress emails server side</title>
<meta name=author content><meta name=keywords content="IT Services,Software development,Security,VPN,Firewall,Servers with Linux,Private email"><meta name=description content="SpeedTech - Information technology services"><meta name=generator content="Hugo 0.123.7"><link href=/css/main.css rel=stylesheet><link rel="shortcut icon" href=/img/favicon.ico type=image/x-icon><link rel=apple-touch-icon href=/img/apple-touch-icon.png><meta property="og:title" content="Encrypt and compress emails server side"><meta property="og:description" content="To improve the security and privacy of users and save disk space, the mail server
Dovecot allows encrypting the files containing the e-mail messages."><meta property="og:type" content="article"><meta property="og:url" content="https://speedtech.it/en/blog/encrypt-compress-email-server/"><meta property="og:image" content="https://speedtech.it/images/blog/encrypt-compress-emails-on-server.jpg"><meta property="article:section" content="blog"><meta property="article:published_time" content="2022-07-08T00:00:00+00:00"><meta property="article:modified_time" content="2022-07-08T00:00:00+00:00"><meta property="og:site_name" content="SpeedTech"><script src=/js/htmx/htmx.min.js defer></script><script src=/js/main.js defer></script></head><body hx-boost=true lang=en><nav id=topnav><div class=container><a class=navbar-brand href=/en><img class=img-fluid src=/img/logo.svg alt=SpeedTech></a><div id=topmenu><button id=responsive-button onclick='htmx.toggleClass(htmx.find("#topmenu"),"responsive")'><i class="icon icon-menu"></i></button><ul><li class=dropdown><a href=/en/#home-bottom role=button>Services</a><ul class=submenu><li><a href=/en/service/applications-development/ title="Software applications design and development"><i class="icon icon-desktop"></i>
Application development</a></li><li><a href=/en/service/e-commerce/ title="E-commerce platforms design, development and integration"><i class="icon icon-cart"></i>
E-commerce solutions</a></li><li><a href=/en/service/custom-cms/ title="Websites and custom CMS development and integration"><i class="icon icon-layers"></i>
Websites backends and CMS</a></li><li><a href=/en/service/private-e-mail/ title="Private E-mail: hosting, security, privacy and archiving"><i class="icon icon-email"></i>
Private E-mail</a></li><li><a href=/en/service/managed-linux-servers/ title="Installation, configuration and maintenance of Linux servers on both physical and virtual (VPS) hardware"><i class="icon icon-server"></i>
Managed Linux servers</a></li><li><a href=/en/service/online-offline-collaboration-solutions/ title="Online and offline collaboration solutions"><i class="icon icon-cloud"></i>
On/off-line collaboration</a></li><li><a href=/en/service/linux-clients/ title="Linux clients: installation and configuration"><i class="icon icon-computer"></i>
Linux clients</a></li><li><a href=/en/service/security-firewalls-vpn/ title="Security structures: firewalls, VPN, encryption, backups"><i class="icon icon-security"></i>
Security</a></li><li><a href=/en/service/domotic-opensource/ title="Open source home automation solutions"><i class="icon icon-robot"></i>
Open source domotic</a></li></ul></li><li><a href=https://brainminder.it>BrainMinder</a></li><li><a href=https://gitea.speedtech.it/explore/repos>Git repository</a></li><li><a href=/en/#contact>Contact</a></li><li><a href=/en/blog>Blog</a></li><li><a href=https://speedtech.it/blog/cifrare-comprimere-email-server/>IT</a></li></ul></div></div></nav><header class=blog-single><div class=container><div class=row><div class="col s12 m9 l9"><h2><a href=/en/blog/>Blog</a></h2><h3 class=title>Encrypt and compress emails server side</h3></div></div></div></header><div id=page-content><div class=container><div class=row><div class="col s12 m9 l9 articlecontent"><p class=text-center><img class=img-fluid src=/images/blog/encrypt-compress-emails-on-server.jpg width=400></p><div style=text-align:justify;margin-bottom:16px><p>To improve the security and privacy of users and save disk space, the mail server
<a href=https://www.dovecot.org/>Dovecot</a> allows encrypting the files containing the e-mail messages.</p><p>Compression is done through the <code>zlib</code> plugin while encryption is done through the <code>mail_crypt</code> plugin.</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span>mail_plugins <span style=color:#f92672>=</span> $mail_plugins zlib mail_crypt
</span></span></code></pre></div><p>The plugins can be configured with several options</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span>plugin <span style=color:#f92672>{</span>
</span></span><span style=display:flex><span> mail_crypt_global_private_key <span style=color:#f92672>=</span> &lt;/etc/dovecot/crypt/master.key
</span></span><span style=display:flex><span> mail_crypt_global_public_key <span style=color:#f92672>=</span> &lt;/etc/dovecot/crypt/master.pub
</span></span><span style=display:flex><span> mail_crypt_curve <span style=color:#f92672>=</span> prime256v1
</span></span><span style=display:flex><span> mail_crypt_save_version <span style=color:#f92672>=</span> <span style=color:#ae81ff>2</span>
</span></span><span style=display:flex><span> zlib_save_level <span style=color:#f92672>=</span> <span style=color:#ae81ff>6</span>
</span></span><span style=display:flex><span> zlib_save <span style=color:#f92672>=</span> lz4
</span></span><span style=display:flex><span><span style=color:#f92672>}</span>
</span></span></code></pre></div><p>To encrypt is necessary to create the key pair: private (<code>master.key</code>) to encrypt and public (<code>master.pub</code>) to decrypt.</p><p>In this way, in case of a server breach, and the e-mail files are stolen, they would be unreadable without the private key necessary to decrypt them.</p><p>From the moment the encryption and compression are active, all the new messages will be automatically encrypted and compressed in a transparent way for the final user.</p><p>To encrypt and compress pre-existing e-mails, simply move messages from one folder to another using an IMAP client.
Alternatively, the following bash script can be used to initiate encryption of all mail files in the example directory <code>/var/vmail/domain/user/Maildir</code> (compression is not possible AFAIK).</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span>find /var/vmail/domain/user/Maildir -type f -regextype egrep -regex <span style=color:#e6db74>&#39;.*S=.*W=.*&#39;</span> | <span style=color:#66d9ef>while</span> read -r file; <span style=color:#66d9ef>do</span>
</span></span><span style=display:flex><span><span style=color:#66d9ef>if</span> <span style=color:#f92672>[[</span> <span style=color:#66d9ef>$(</span>head -c7 <span style=color:#e6db74>&#34;</span>$file<span style=color:#e6db74>&#34;</span><span style=color:#66d9ef>)</span> !<span style=color:#f92672>=</span> <span style=color:#e6db74>&#34;CRYPTED&#34;</span> <span style=color:#f92672>]]</span>; <span style=color:#66d9ef>then</span>
</span></span><span style=display:flex><span>echo $file
</span></span><span style=display:flex><span>doveadm fs put crypt private_key_path<span style=color:#f92672>=</span>/etc/dovecot/crypt/master.key:public_key_path<span style=color:#f92672>=</span>/etc/dovecot/crypt/master.pub:posix:prefix<span style=color:#f92672>=</span>/ <span style=color:#ae81ff>\
</span></span></span><span style=display:flex><span><span style=color:#ae81ff></span> <span style=color:#e6db74>&#34;</span>$file<span style=color:#e6db74>&#34;</span> <span style=color:#e6db74>&#34;</span>$file<span style=color:#e6db74>&#34;</span>
</span></span><span style=display:flex><span> chmod <span style=color:#ae81ff>600</span> <span style=color:#e6db74>&#34;</span>$file<span style=color:#e6db74>&#34;</span>
</span></span><span style=display:flex><span> chown vmail:vmail <span style=color:#e6db74>&#34;</span>$file<span style=color:#e6db74>&#34;</span>
</span></span><span style=display:flex><span><span style=color:#66d9ef>fi</span>
</span></span><span style=display:flex><span><span style=color:#66d9ef>done</span>
</span></span></code></pre></div><p>In case, on the other hand, it is necessary to access one or more unencrypted email files, the following scripts can be used :</p><p>To decrypt only (in case the files have not been compressed)</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span>find /var/vmail/domain/user/Maildir -type f -regextype egrep -regex <span style=color:#e6db74>&#39;.*S=.*W=.*&#39;</span> | <span style=color:#66d9ef>while</span> read -r file; <span style=color:#66d9ef>do</span>
</span></span><span style=display:flex><span><span style=color:#66d9ef>if</span> <span style=color:#f92672>[[</span> <span style=color:#66d9ef>$(</span>head -c7 <span style=color:#e6db74>&#34;</span>$file<span style=color:#e6db74>&#34;</span><span style=color:#66d9ef>)</span> <span style=color:#f92672>==</span> <span style=color:#e6db74>&#34;CRYPTED&#34;</span> <span style=color:#f92672>]]</span>; <span style=color:#66d9ef>then</span>
</span></span><span style=display:flex><span> echo $file
</span></span><span style=display:flex><span> doveadm fs get crypt private_key_path<span style=color:#f92672>=</span>/etc/dovecot/crypt/master.key:public_key_path<span style=color:#f92672>=</span>/etc/dovecot/crypt/master.pub:posix:prefix<span style=color:#f92672>=</span>/ <span style=color:#ae81ff>\
</span></span></span><span style=display:flex><span><span style=color:#ae81ff></span> <span style=color:#e6db74>&#34;</span>$file<span style=color:#e6db74>&#34;</span> &gt; <span style=color:#e6db74>&#34;/tmp/</span><span style=color:#66d9ef>$(</span>basename <span style=color:#e6db74>&#34;</span>$file<span style=color:#e6db74>&#34;</span><span style=color:#66d9ef>)</span><span style=color:#e6db74>&#34;</span>
</span></span><span style=display:flex><span> <span style=color:#66d9ef>if</span> <span style=color:#f92672>[[</span> -s <span style=color:#e6db74>&#34;/tmp/</span><span style=color:#66d9ef>$(</span>basename <span style=color:#e6db74>&#34;</span>$file<span style=color:#e6db74>&#34;</span><span style=color:#66d9ef>)</span><span style=color:#e6db74>&#34;</span> <span style=color:#f92672>]]</span>; <span style=color:#66d9ef>then</span>
</span></span><span style=display:flex><span> chmod <span style=color:#ae81ff>600</span> <span style=color:#e6db74>&#34;/tmp/</span><span style=color:#66d9ef>$(</span>basename <span style=color:#e6db74>&#34;</span>$file<span style=color:#e6db74>&#34;</span><span style=color:#66d9ef>)</span><span style=color:#e6db74>&#34;</span>
</span></span><span style=display:flex><span> chown vmail:vmail <span style=color:#e6db74>&#34;/tmp/</span><span style=color:#66d9ef>$(</span>basename <span style=color:#e6db74>&#34;</span>$file<span style=color:#e6db74>&#34;</span><span style=color:#66d9ef>)</span><span style=color:#e6db74>&#34;</span>
</span></span><span style=display:flex><span> mv <span style=color:#e6db74>&#34;/tmp/</span><span style=color:#66d9ef>$(</span>basename <span style=color:#e6db74>&#34;</span>$file<span style=color:#e6db74>&#34;</span><span style=color:#66d9ef>)</span><span style=color:#e6db74>&#34;</span> <span style=color:#e6db74>&#34;</span>$file<span style=color:#e6db74>&#34;</span>
</span></span><span style=display:flex><span> <span style=color:#66d9ef>else</span>
</span></span><span style=display:flex><span> rm <span style=color:#e6db74>&#34;/tmp/</span><span style=color:#66d9ef>$(</span>basename <span style=color:#e6db74>&#34;</span>$file<span style=color:#e6db74>&#34;</span><span style=color:#66d9ef>)</span><span style=color:#e6db74>&#34;</span>
</span></span><span style=display:flex><span> <span style=color:#66d9ef>fi</span>
</span></span><span style=display:flex><span><span style=color:#66d9ef>fi</span>
</span></span><span style=display:flex><span><span style=color:#66d9ef>done</span>
</span></span></code></pre></div><p>To decrypt and decompress :</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span>find /var/vmail/domain/user/Maildir -type f -regextype egrep -regex <span style=color:#e6db74>&#39;.*S=.*W=.*&#39;</span> | <span style=color:#66d9ef>while</span> read -r file; <span style=color:#66d9ef>do</span>
</span></span><span style=display:flex><span><span style=color:#66d9ef>if</span> <span style=color:#f92672>[[</span> <span style=color:#66d9ef>$(</span>head -c7 <span style=color:#e6db74>&#34;</span>$file<span style=color:#e6db74>&#34;</span><span style=color:#66d9ef>)</span> <span style=color:#f92672>==</span> <span style=color:#e6db74>&#34;CRYPTED&#34;</span> <span style=color:#f92672>]]</span>; <span style=color:#66d9ef>then</span>
</span></span><span style=display:flex><span> echo $file
</span></span><span style=display:flex><span> doveadm fs get compress lz4:0:crypt:private_key_path<span style=color:#f92672>=</span>/etc/dovecot/crypt/master.key:public_key_path<span style=color:#f92672>=</span>/etc/dovecot/crypt/master.pub:posix:prefix<span style=color:#f92672>=</span>/ <span style=color:#ae81ff>\
</span></span></span><span style=display:flex><span><span style=color:#ae81ff></span> <span style=color:#e6db74>&#34;</span>$file<span style=color:#e6db74>&#34;</span> &gt; <span style=color:#e6db74>&#34;/tmp/</span><span style=color:#66d9ef>$(</span>basename <span style=color:#e6db74>&#34;</span>$file<span style=color:#e6db74>&#34;</span><span style=color:#66d9ef>)</span><span style=color:#e6db74>&#34;</span>
</span></span><span style=display:flex><span> <span style=color:#66d9ef>if</span> <span style=color:#f92672>[[</span> -s <span style=color:#e6db74>&#34;/tmp/</span><span style=color:#66d9ef>$(</span>basename <span style=color:#e6db74>&#34;</span>$file<span style=color:#e6db74>&#34;</span><span style=color:#66d9ef>)</span><span style=color:#e6db74>&#34;</span> <span style=color:#f92672>]]</span>; <span style=color:#66d9ef>then</span>
</span></span><span style=display:flex><span> chmod <span style=color:#ae81ff>600</span> <span style=color:#e6db74>&#34;/tmp/</span><span style=color:#66d9ef>$(</span>basename <span style=color:#e6db74>&#34;</span>$file<span style=color:#e6db74>&#34;</span><span style=color:#66d9ef>)</span><span style=color:#e6db74>&#34;</span>
</span></span><span style=display:flex><span> chown vmail:vmail <span style=color:#e6db74>&#34;/tmp/</span><span style=color:#66d9ef>$(</span>basename <span style=color:#e6db74>&#34;</span>$file<span style=color:#e6db74>&#34;</span><span style=color:#66d9ef>)</span><span style=color:#e6db74>&#34;</span>
</span></span><span style=display:flex><span> mv <span style=color:#e6db74>&#34;/tmp/</span><span style=color:#66d9ef>$(</span>basename <span style=color:#e6db74>&#34;</span>$file<span style=color:#e6db74>&#34;</span><span style=color:#66d9ef>)</span><span style=color:#e6db74>&#34;</span> <span style=color:#e6db74>&#34;</span>$file<span style=color:#e6db74>&#34;</span>
</span></span><span style=display:flex><span> <span style=color:#66d9ef>else</span>
</span></span><span style=display:flex><span> rm <span style=color:#e6db74>&#34;/tmp/</span><span style=color:#66d9ef>$(</span>basename <span style=color:#e6db74>&#34;</span>$file<span style=color:#e6db74>&#34;</span><span style=color:#66d9ef>)</span><span style=color:#e6db74>&#34;</span>
</span></span><span style=display:flex><span> <span style=color:#66d9ef>fi</span>
</span></span><span style=display:flex><span><span style=color:#66d9ef>fi</span>
</span></span><span style=display:flex><span><span style=color:#66d9ef>done</span>
</span></span></code></pre></div></div><small>Publish date : 2022-07-08</small> | <small>Last change : 2022-07-08</small><p><small><a href=/en/categories/solutions/>Solutions</a> |
<a href=/en/tags/security/>Security</a>
|
<a href=/en/tags/server/>Server</a>
|
<a href=/en/tags/privacy/>Privacy</a>
|
<a href=/en/tags/dovecot/>Dovecot</a></small></p></div><section class="col s12 m3 l3 text-center blogsidebar"><div class=tags><h4 class=text-center>Tags</h4><small><a href=/en/tags/custom-cms/>Custom CMS</a>
<a href=/en/tags/database/>Database</a>
<a href=/en/tags/desktop-application/>Desktop Application</a>
<a href=/en/tags/dovecot/>Dovecot</a>
<a href=/en/tags/e-commerce/>E-Commerce</a>
<a href=/en/tags/file-server/>File Server</a>
<a href=/en/tags/firewall/>Firewall</a>
<a href=/en/tags/home-assistant/>Home Assistant</a>
<a href=/en/tags/home-automation/>Home Automation</a>
<a href=/en/tags/linux/>Linux</a>
<a href=/en/tags/mariadb/>MariaDB</a>
<a href=/en/tags/nas/>NAS</a>
<a href=/en/tags/networking/>Networking</a>
<a href=/en/tags/office-server/>Office Server</a>
<a href=/en/tags/openssl/>OpenSSL</a>
<a href=/en/tags/opnsense/>OpnSense</a>
<a href=/en/tags/oracle-database/>Oracle Database</a>
<a href=/en/tags/pascal/>Pascal</a>
<a href=/en/tags/postgresql/>PostgreSQL</a>
<a href=/en/tags/privacy/>Privacy</a>
<a href=/en/tags/pwa/>PWA</a>
<a href=/en/tags/router/>Router</a>
<a href=/en/tags/security/>Security</a>
<a href=/en/tags/server/>Server</a>
<a href=/en/tags/software-development/>Software Development</a>
<a href=/en/tags/system-administration/>System Administration</a>
<a href=/en/tags/ufw/>UFW</a>
<a href=/en/tags/vpn/>VPN</a>
<a href=/en/tags/web-application/>Web Application</a></small></div><div class="row articles"><h4 class=text-center>Latest articles</h4><div class="col s12 m12 l12 article" style=text-align:center><div class=article-wrapper><a href=https://speedtech.it/en/blog/home-automation-with-home-assistant/><img class=img-fluid src=/images/blog/home-assistant_hud8587ebef75f9af2ca0bbe5f5b19dc45_61256_200x0_resize_q75_box.jpg width=200 height=142 alt="Home automation with Home Assistant" class=img-fluid title="Home automation with Home Assistant"></a><div class=caption style=max-width:250px;margin:auto><div class=caption-text><a class=text-title style=font-weight:400;font-size:14px href=https://speedtech.it/en/blog/home-automation-with-home-assistant/>Home automation with Home Assistant</a></div><div class=caption-bg></div></div></div></div><div class="col s12 m12 l12 article" style=text-align:center><div class=article-wrapper><a href=https://speedtech.it/en/blog/brainminder-intro/><img class=img-fluid src=/images/blog/brainminder_hu1e83e6fcbe10acdd81c6d0d0e9901bac_73079_200x0_resize_box_3.png width=200 height=123 alt="BrainMinder - second brain web application" class=img-fluid title="BrainMinder - second brain web application"></a><div class=caption style=max-width:250px;margin:auto><div class=caption-text><a class=text-title style=font-weight:400;font-size:14px href=https://speedtech.it/en/blog/brainminder-intro/>BrainMinder - second brain web application</a></div><div class=caption-bg></div></div></div></div><div class="col s12 m12 l12 article" style=text-align:center><div class=article-wrapper><a href=https://speedtech.it/en/blog/wmtrento-spreadsheet-sync/><img class=img-fluid src=/images/project/wmtrento-jspreadsheet_hu80e88a9b53e97bd051be5a21f49c7525_29205_200x0_resize_q75_box.jpg width=200 height=123 alt="Web spreadsheet application with sync capabilities" class=img-fluid title="Web spreadsheet application with sync capabilities"></a><div class=caption style=max-width:250px;margin:auto><div class=caption-text><a class=text-title style=font-weight:400;font-size:14px href=https://speedtech.it/en/blog/wmtrento-spreadsheet-sync/>Web spreadsheet application with sync capabilities</a></div><div class=caption-bg></div></div></div></div><div class="col s12 m12 l12 article" style=text-align:center><div class=article-wrapper><a href=https://speedtech.it/en/blog/postgresql-database-link/><img class=img-fluid src=/images/blog/postgresql_hu0d75c994c55fb1d165504c57f70131c4_34984_200x0_resize_q75_box.jpg width=200 height=142 alt="Database link with PostgreSQL" class=img-fluid title="Database link with PostgreSQL"></a><div class=caption style=max-width:250px;margin:auto><div class=caption-text><a class=text-title style=font-weight:400;font-size:14px href=https://speedtech.it/en/blog/postgresql-database-link/>Database link with PostgreSQL</a></div><div class=caption-bg></div></div></div></div></div></section></div></div></div><footer><div class="row container menu"><div class="col m3 l3"><h4>Software development and integration</h4><ul><li><a href=/en/service/applications-development/>Web applications</a></li><li><a href=/en/service/applications-development/>Desktop applications</a></li><li><a href=/en/service/applications-development/>Mobile applications (PWA)</a></li><li><a href=/en/service/custom-cms/>Static and dynamic multilingual websites</a></li><li><a href=/en/service/custom-cms/>Customized CMS</a></li><li><a href=/en/service/e-commerce/>E-commerce</a></li></ul></div><div class="col m3 l3"><h4>Collaboration and communication</h4><ul><li><a href=/en/service/private-e-mail/>Private email</a></li><li><a href=/en/service/private-e-mail/>GPG for email</a></li><li><a href=/en/service/online-offline-collaboration-solutions/>Nextcloud</a></li><li><a href=/en/service/online-offline-collaboration-solutions/>TrueNAS</a></li><li><a href=/en/service/online-offline-collaboration-solutions/>Seafile</a></li><li><a href=/en/service/managed-linux-servers/>Servers with Linux</a></li></ul></div><div class="col m3 l3"><h4>Security</h4><ul><li><a href=/en/service/security-firewalls-vpn/>Firewall OpnSense</a></li><li><a href=/en/service/security-firewalls-vpn/>Password manager Vaultwarden</a></li><li><a href=/en/service/security-firewalls-vpn/>Wireguard VPN</a></li><li><a href=/en/service/security-firewalls-vpn/>Fritz!Box VPN</a></li><li><a href=/en/service/security-firewalls-vpn/>Data encryption</a></li><li><a href=/en/service/security-firewalls-vpn/>Backup in Cloud</a></li><li><a href=/en/service/security-firewalls-vpn/>Ransomware protection</a></li></ul></div><div class="col m3 l3"><h4>Open Source Domotic</h4><ul><li><a href=/en/service/domotic-opensource/>HomeAssistant</a></li><li><a href=/en/service/domotic-opensource/>Tasmota</a></li><li><a href=/en/service/domotic-opensource/>Integration with Shelly devices</a></li><li><a href=/en/service/domotic-opensource/>Integration with Sonoff devices</a></li></ul></div></div><div class="row container"><div class="col m4 l4 footer-contact-details"><p>SpeedTech di Gerola Ing. Roberto</p><p>VAT ID : IT02446960227</p><p>REA : TN - 225335</p><p class=copyright>2001-2024</p></div><div class="col m4 l4 footer-contact-details" id=contact><p><span class=footer-title><i class="icon icon-phone"></i>Phone : </span><a href=tel:+390464414131 title="Telephone contact">+39 0464 414131</a></p><p><span class=footer-title><i class="icon icon-email"></i>Email : </span><a href=mailto:%72%6f%62%65%72%74%6f%40%73%70%65%65%64%74%65%63%68%2e%69%74>Send an email</a></p><h4 style=margin-top:20px><i class="icon icon-location"></i>Location</h4><p>Viale Trento, 31<br>IT-38068 Rovereto (TN) ITALY</p></div><div class="col m4 l4 footer-contact-details"><h4 style=margin-top:20px><i class="icon icon-link"></i>Links</h4><p><i class="icon icon-git"></i> <a href=https://forgejo.speedtech.it/explore/repos>Git code repository</a></p><p><img alt=BrainMinder style=width:32px;vertical-align:middle src=https://brainminder.it/brainminder-icon.svg><a href=https://brainminder.it>BrainMinder</a></p></div></div></footer></body></html>