Tuta AppImage not working

I use tuta as my email provider. They do not provide a .deb application. Only AppImage.

Its daunting to log into my account 3-5 times a day every day. So i decided to create an appVM, make it disposable and launch the AppImage inside. This way i can stay logged in throughout sessions.

However, when i try to login, it says ‘cannot reach our servers’ but when i open brave or firefox im able to access internet

I just tried, it worked fine for me in a fedora template.

Does the error also happen when you use the AppVM and not a disposable?

Try running it with “qvm-run -p AppVM /path/to/appname” to watch for any error messages on startup going to the console. If the app has command parameters for verbose settings add those here as well.

Try with “-u root” to see if that is some kind of default permissions problem opening a socket or something. Don’t run it normally this way though, just as a test.

If there is still no indication of the specific error then try ruining it under “strace” control. Strace will follow the execution of the app through the startup sequences and display all system call return codes so you can see what specific system call(s) is actually failing. Then go back in that stream and find what parameters were sent to that system call. It might be missing or invalid data being sent causing the failure.

I have tried ‘qvm-run -p tuta /home/user/tutanota-desktop-linux.AppImage’ And with -u root. AppImage still fails to connect to tuta servers. Also, this is on the appvm. Not a disposable. Firefox still works. Please see the results.

[0401/145551.084954:FATAL:electron_main_delegate.cc(295)] Running as root without --no-sandbox is not supported. See https://crbug.com/638180.
/bin/bash: line 1:  1473 Trace/breakpoint trap   (core dumped) /home/user/tutanota-desktop-linux.AppImage
[admin@dom0 ~]$ qvm-run -p tuta /home/user/tutanota-desktop-linux.AppImage
the monkey has been patched pid: 1559
(node:1559) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
(Use `tutanota-desktop --trace-deprecation ...` to show where the warning was created)
[1559:0401/145615.494579:ERROR:browser_main_loop.cc(278)] Gdk: gdk_atom_intern: assertion 'atom_name != NULL' failed
[1559:0401/145615.495267:ERROR:browser_main_loop.cc(278)] Gdk: gdk_atom_intern: assertion 'atom_name != NULL' failed
version:   220.240321.0
resolving key... tutanota-vault
config up to date
[2024-04-01T13:56:15.813Z] using safeStorage with backend gnome_libsecret
[2024-04-01T13:56:15.934Z] Create tray:true
[DesktopSseClient] Resetting stored state
[DesktopSseClient] sseInfo corrupted or not present, making sure pushEncSessionKeys and scheduled alarms are cleared
[ApplicationWindow] webAssetsPath:  /tmp/.mount_tutanogKjNwy/resources/app.asar
MESA: error: ZINK: failed to choose pdev
glx: failed to create drisw screen
failed to load driver: zink
[ApplicationWindow] getting dictionaries from: https://app.tuta.com/desktop/dictionaries/
[1598:0401/145616.077534:ERROR:viz_main_impl.cc(196)] Exiting GPU process due to errors during initialization
default mailto handler: false
Webapp ready
[2024-04-01T13:56:16.087Z] [ElectronUpdater] INFO: Checking for update
[2024-04-01T13:56:16.088Z] [ElectronUpdater] INFO: checking-for-update
[ApplicationWindow] spellcheck-dictionary-initialized en-US
[1559:0401/145616.119053:ERROR:browser_main_loop.cc(278)] Gtk: gtk_widget_add_accelerator: assertion 'GTK_IS_ACCEL_GROUP (accel_group)' failed
desktop file exists, checking version...
[DesktopWindowManager] invalidating alarms for all windows
[DesktopWindowManager] invalidating alarms for window 1
MESA: error: ZINK: failed to choose pdev
glx: failed to create drisw screen
failed to load driver: zink
[1642:0401/145616.452845:ERROR:viz_main_impl.cc(196)] Exiting GPU process due to errors during initialization
[1639:0401/145616.614980:ERROR:command_buffer_proxy_impl.cc(131)] ContextResult::kTransientFailure: Failed to send GpuControl.CreateCommandBuffer.
[1559:0401/145616.655796:ERROR:browser_main_loop.cc(278)] Gtk: gtk_widget_add_accelerator: assertion 'GTK_IS_ACCEL_GROUP (accel_group)' failed
[1559:0401/145616.706854:ERROR:browser_main_loop.cc(278)] Gtk: gtk_widget_add_accelerator: assertion 'GTK_IS_ACCEL_GROUP (accel_group)' failed
[DesktopSseClient] scheduling to check sse in 1 seconds
[DesktopSseClient] scheduling to check sse in 1 seconds
[2024-04-01T13:56:17.740Z] [ElectronUpdater] INFO: Update for version 220.240321.0 is not available (latest version: 220.240321.0, downgrade is disallowed).
[2024-04-01T13:56:17.740Z] [ElectronUpdater] INFO: update not available: {
  version: '220.240321.0',
  files: [
    {
      url: 'tutanota-desktop-linux.AppImage',
      sha512: 'fQsRj3326oQEBZmXaYgd2td/RYSagZhLQ04Z4zKCexIg+EyNYJ67W9e8zPbng6VrK9wtRie1R3lhJmJvYfKomA==',
      size: 123829315,
      blockMapSize: 130135
    }
  ],
  path: 'tutanota-desktop-linux.AppImage',
  sha512: 'fQsRj3326oQEBZmXaYgd2td/RYSagZhLQ04Z4zKCexIg+EyNYJ67W9e8zPbng6VrK9wtRie1R3lhJmJvYfKomA==',
  releaseDate: '2024-03-21T11:21:42.588Z',
  signature: 'OAlLU+HizvQaEOjXp2l6JS2YN8U1RvFRD8xLqLzlLaeqIFxvn3QxZxjy77PFbkYVl1osSXi9S9Be5jLfQxhFX+eCah1C0nS7yORWS3H+4iNVRmAeAcCqx5WIaPLaFkfQUDzjyJAzbq6cHhCnkrKooJ7nzI4psj0VXhshdtz/nj/IDfNknp6YfAmtpBjlEc1EaGQPyfcVobpFNH9tPx33Y5BrAVcCJlofEGmggZ6mtpA6aWKOB7z66L57KQS2aTkVeCFRrF7mSPw+imK1H3ph4iAAYu5lzoc4J35VLb1xVjR+qNceskXT+AFnY/xzRA2iImin6fKTT4DmAu/I3sjXtA=='
}
[DesktopSseClient] scheduling to check sse in 10 seconds
[DesktopSseClient] sse info not available, skip reconnect
[DesktopSseClient] scheduling to check sse in 10 seconds
[DesktopSseClient] sse info not available, skip reconnect
[ProtocolProxy] error for GET https://app.tuta.com/rest/sys/saltservice:
[ProtocolProxy] TypeError: fetch failed
    at /tmp/.mount_tutanogKjNwy/resources/app.asar/desktop/DesktopMain.js:10:29050
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async /tmp/.mount_tutanogKjNwy/resources/app.asar/desktop/DesktopMain.js:10:29558
    at async AsyncFunction.<anonymous> (node:electron/js2c/browser_init:2:47442) {
  [cause]: AggregateError
      at internalConnectMultiple (node:net:1114:18)
      at internalConnectMultiple (node:net:1177:5)
      at Timeout.internalConnectMultipleTimeout (node:net:1687:3)
      at listOnTimeout (node:internal/timers:575:11)
      at process.processTimers (node:internal/timers:514:7) {
    code: 'ETIMEDOUT',
    [errors]: [ [Error], [Error] ]
  }
}
[ProtocolProxy] {"name":"TypeError","message":"fetch failed","stack":"TypeError: fetch failed\n    at /tmp/.mount_tutanogKjNwy/resources/app.asar/desktop/DesktopMain.js:10:29050\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async /tmp/.mount_tutanogKjNwy/resources/app.asar/desktop/DesktopMain.js:10:29558\n    at async AsyncFunction.<anonymous> (node:electron/js2c/browser_init:2:47442)"}
[ProtocolProxy] failed after 307ms
[DesktopSseClient] scheduling to check sse in 10 seconds
[DesktopSseClient] sse info not available, skip reconnect
[1559:0401/145640.840528:ERROR:browser_main_loop.cc(278)] Gtk: gtk_widget_add_accelerator: assertion 'GTK_IS_ACCEL_GROUP (accel_group)' failed
[DesktopSseClient] scheduling to check sse in 10 seconds
[DesktopSseClient] sse info not available, skip reconnect
[DesktopSseClient] scheduling to check sse in 10 seconds
[DesktopSseClient] sse info not available, skip reconnect

yes both appvm and disposable not working

what’s the output of curl -v "https://app.tuta.com/rest/sys/saltservice" in a qube where you are trying tuta?

please see below:

* processing: https://app.tuta.com/rest/sys/saltservice
*   Trying 185.205.69.10:443...
*   Trying [2a10:e000:1::10]:443...
* Immediate connect fail for 2a10:e000:1::10: Network is unreachable
* Connected to app.tuta.com (185.205.69.10) port 443
* ALPN: offers h2,http/1.1
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
*  CAfile: /etc/pki/tls/certs/ca-bundle.crt
*  CApath: none
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=app.tuta.com
*  start date: Jan 18 11:30:22 2024 GMT
*  expire date: Apr 17 11:30:21 2024 GMT
*  subjectAltName: host "app.tuta.com" matched cert's "app.tuta.com"
*  issuer: C=US; O=Let's Encrypt; CN=R3
*  SSL certificate verify ok.
* using HTTP/2
* h2 [:method: GET]
* h2 [:scheme: https]
* h2 [:authority: app.tuta.com]
* h2 [:path: /rest/sys/saltservice]
* h2 [user-agent: curl/8.2.1]
* h2 [accept: */*]
* Using Stream ID: 1
> GET /rest/sys/saltservice HTTP/2
> Host: app.tuta.com
> User-Agent: curl/8.2.1
> Accept: */*
> 
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* old SSL session ID is stale, removing
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* old SSL session ID is stale, removing
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* old SSL session ID is stale, removing
< HTTP/2 400 
< date: Tue, 02 Apr 2024 08:23:41 GMT
< x-frame-options: DENY
< strict-transport-security: max-age=63072000; includeSubDomains; preload
< x-content-type-options: nosniff
< x-xss-protection: 1
< referrer-policy: no-referrer
< access-control-expose-headers: Date
< cache-control: no-cache, no-store
< error-id: NuSu1Vd----9
< content-length: 0
< 
* Connection #0 to host app.tuta.com left intact
[user@tuta ~]$ 

Hi,

Maybe it’s worth giving this approach a try:
Fom’s giant list of Qubes OS workarounds, tweaks and shenanigans - #8 by Fom

I wrote it back for fedora 36, but it worked for me in 38 too.

If I had to guess, I’d assume you’re running into issues others aren’t because your using a debian qube, but that’s a complete guess.

as a temp fix i got it to work under a fedora-39 template with all my day-to-day software.

Im not sure what caused the default fedora-39 template not to work. But i will look into this as wel. Thanks