95 lines
No EOL
24 KiB
HTML
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> </etc/dovecot/crypt/master.key
|
|
</span></span><span style=display:flex><span> mail_crypt_global_public_key <span style=color:#f92672>=</span> </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>'.*S=.*W=.*'</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>"</span>$file<span style=color:#e6db74>"</span><span style=color:#66d9ef>)</span> !<span style=color:#f92672>=</span> <span style=color:#e6db74>"CRYPTED"</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>"</span>$file<span style=color:#e6db74>"</span> <span style=color:#e6db74>"</span>$file<span style=color:#e6db74>"</span>
|
|
</span></span><span style=display:flex><span> chmod <span style=color:#ae81ff>600</span> <span style=color:#e6db74>"</span>$file<span style=color:#e6db74>"</span>
|
|
</span></span><span style=display:flex><span> chown vmail:vmail <span style=color:#e6db74>"</span>$file<span style=color:#e6db74>"</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>'.*S=.*W=.*'</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>"</span>$file<span style=color:#e6db74>"</span><span style=color:#66d9ef>)</span> <span style=color:#f92672>==</span> <span style=color:#e6db74>"CRYPTED"</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>"</span>$file<span style=color:#e6db74>"</span> > <span style=color:#e6db74>"/tmp/</span><span style=color:#66d9ef>$(</span>basename <span style=color:#e6db74>"</span>$file<span style=color:#e6db74>"</span><span style=color:#66d9ef>)</span><span style=color:#e6db74>"</span>
|
|
</span></span><span style=display:flex><span> <span style=color:#66d9ef>if</span> <span style=color:#f92672>[[</span> -s <span style=color:#e6db74>"/tmp/</span><span style=color:#66d9ef>$(</span>basename <span style=color:#e6db74>"</span>$file<span style=color:#e6db74>"</span><span style=color:#66d9ef>)</span><span style=color:#e6db74>"</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>"/tmp/</span><span style=color:#66d9ef>$(</span>basename <span style=color:#e6db74>"</span>$file<span style=color:#e6db74>"</span><span style=color:#66d9ef>)</span><span style=color:#e6db74>"</span>
|
|
</span></span><span style=display:flex><span> chown vmail:vmail <span style=color:#e6db74>"/tmp/</span><span style=color:#66d9ef>$(</span>basename <span style=color:#e6db74>"</span>$file<span style=color:#e6db74>"</span><span style=color:#66d9ef>)</span><span style=color:#e6db74>"</span>
|
|
</span></span><span style=display:flex><span> mv <span style=color:#e6db74>"/tmp/</span><span style=color:#66d9ef>$(</span>basename <span style=color:#e6db74>"</span>$file<span style=color:#e6db74>"</span><span style=color:#66d9ef>)</span><span style=color:#e6db74>"</span> <span style=color:#e6db74>"</span>$file<span style=color:#e6db74>"</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>"/tmp/</span><span style=color:#66d9ef>$(</span>basename <span style=color:#e6db74>"</span>$file<span style=color:#e6db74>"</span><span style=color:#66d9ef>)</span><span style=color:#e6db74>"</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>'.*S=.*W=.*'</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>"</span>$file<span style=color:#e6db74>"</span><span style=color:#66d9ef>)</span> <span style=color:#f92672>==</span> <span style=color:#e6db74>"CRYPTED"</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>"</span>$file<span style=color:#e6db74>"</span> > <span style=color:#e6db74>"/tmp/</span><span style=color:#66d9ef>$(</span>basename <span style=color:#e6db74>"</span>$file<span style=color:#e6db74>"</span><span style=color:#66d9ef>)</span><span style=color:#e6db74>"</span>
|
|
</span></span><span style=display:flex><span> <span style=color:#66d9ef>if</span> <span style=color:#f92672>[[</span> -s <span style=color:#e6db74>"/tmp/</span><span style=color:#66d9ef>$(</span>basename <span style=color:#e6db74>"</span>$file<span style=color:#e6db74>"</span><span style=color:#66d9ef>)</span><span style=color:#e6db74>"</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>"/tmp/</span><span style=color:#66d9ef>$(</span>basename <span style=color:#e6db74>"</span>$file<span style=color:#e6db74>"</span><span style=color:#66d9ef>)</span><span style=color:#e6db74>"</span>
|
|
</span></span><span style=display:flex><span> chown vmail:vmail <span style=color:#e6db74>"/tmp/</span><span style=color:#66d9ef>$(</span>basename <span style=color:#e6db74>"</span>$file<span style=color:#e6db74>"</span><span style=color:#66d9ef>)</span><span style=color:#e6db74>"</span>
|
|
</span></span><span style=display:flex><span> mv <span style=color:#e6db74>"/tmp/</span><span style=color:#66d9ef>$(</span>basename <span style=color:#e6db74>"</span>$file<span style=color:#e6db74>"</span><span style=color:#66d9ef>)</span><span style=color:#e6db74>"</span> <span style=color:#e6db74>"</span>$file<span style=color:#e6db74>"</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>"/tmp/</span><span style=color:#66d9ef>$(</span>basename <span style=color:#e6db74>"</span>$file<span style=color:#e6db74>"</span><span style=color:#66d9ef>)</span><span style=color:#e6db74>"</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> |