Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Inlined image in signature broken in GMail #1027

Open
Arsnael opened this issue May 7, 2024 · 25 comments
Open

Inlined image in signature broken in GMail #1027

Arsnael opened this issue May 7, 2024 · 25 comments

Comments

@Arsnael
Copy link
Member

Arsnael commented May 7, 2024

From linagora/tmail-flutter#2849

GMail do not support inlined base64 image.

This concerns the way we insert inlined images in signatures for now, keep in mind this work would be bound to the identity and the way to insert images in the signature's identity.

Brain storming:

Session extention:
 - URI com:linagora:params:public:assets
 - publicAssetTotalSize: UnsignedInt space that can be hosted

PublicAsset JMAP objects

 - id (serverSet)
 - publicURI (serverSet)
 - size (serverSet)
 - blobId
 - identityIds: Id[]|null, default to null
 
/get 
/set create 
    front need to upload the image first
    back needs to copy the content (not just upload)
    back needs to validate the content type: `image/*`
/set destroy
/set update on identityIds

Client (Twake mail) is responsible of deleting PublicAssets with no identity associated with them.

GET (no auth) jmap.linagora.com/publicAsset/xyz
    Route would need to be added in Apisix basicAuth routes to bypass OIDC authentication
@vttranlina
Copy link
Member

GET (no auth) jmap.linagora.com/publicAsset/xyz

Should we be concerned about private data when "no auth"?

Gmail generates a signed URL for the image with a sort expiration time. (After expiration time, you need to re-open the email or reload page one new)

@chibenwa
Copy link
Member

chibenwa commented May 7, 2024

The user is fully aware of the data exposed there. No auth is entirely the point.
We might generate a complex enough random string to discourage crawling attempts.

@chibenwa
Copy link
Member

chibenwa commented May 7, 2024

Gmail generates a signed URL for the image with a sort expiration time. (After expiration time, you need to re-open the email or reload page one new)

Complex.

URL need to be accessed several years onto the future. and we cannot execute logic when reading the mail (like signing the url)

A signature without expiracy is of little use, and not really better than just a random enough string.

@Arsnael
Copy link
Member Author

Arsnael commented May 8, 2024

My thinking on tasks:

  • ADR
  • JMAP extension com:linagora:params:public:assets => field publicAssetTotalSize
  • POJO PublicAsset
  • PublicAsset/get
  • PublicAsset/set create
  • PublicAsset/set destroy
  • PublicAsset/set update
  • Implement JMAP route {jmap_endpoint}/publicAsset/{id}
  • Documentation JMAP feature

The extension and POJO could probably be done together (separated from the rest to ease parallelisation of work)

@vttranlina
Copy link
Member

GET (no auth) jmap.linagora.com/publicAsset/xyz
Route would need to be added in Apisix basicAuth routes to bypass OIDC authentication

We can directly use the public URL from S3 (OVH), then don't need to forward to jmap.linagora.com server

@quantranhong1999
Copy link
Member

How about upon Identity/set, TMail client instead of storing image under the based64 encoded:

"htmlSignature": "<p>my signature with image</p><p><img src=\"data:image/jpg;base64,/9j/4AAQSkZJRg...

It uploads the image as an attachment via the upload route, gets the blobId returned e.g. f72818e0-0d11-11ef-9d4e-7d1058f3d6e1_5, uses it as the cid, then stores the htmlSignature as:

"htmlSignature": "<p>my signature with image</p><p><img src=\"cid:f72818e0-0d11-11ef-9d4e-7d1058f3d6e1_5...

When the TMail client sends mail: it does Email/set with an attachment that refers to the above image with the same cid e.g. here f72818e0-0d11-11ef-9d4e-7d1058f3d6e1_5. Then Gmail can likely load image from attachment using the cid.

Does that sound possible to you?

@vttranlina
Copy link
Member

Then Gmail can likely load image from attachment using the cid.

How Gmail can know cid here is blobId of tmail-backend, and can fetch image data from {jmap_tmail_server}/download/{blobId}?

@vttranlina
Copy link
Member

Bonus: Here is the email file with a picture in the signature (I sent it from Tmail to Gmail). It displays correctly in Thunderbird and Tmail but not in Gmail.
testSignatureImage.txt

@quantranhong1999
Copy link
Member

How Gmail can know cid here is blobId of tmail-backend, and can fetch image data from {jmap_tmail_server}/download/{blobId}?

This way uses the sending email with the inline attachment nature of email, GMail does not know and does not need to know how TMail manages the blob.

Screencast.from.08-05-2024.16.09.29.webm

The Email/set request in above video:

[
    [
        "Email/set",
        {
            "accountId": "8e1534a48ceb6a660b23b18d0de5fba066b2179de5872d4426f90a2cc931095d",
            "create": {
                "bfe52130-0d1a-11ef-96ca-81981cc56f01": {
                    "mailboxIds": {
                        "ca739c70-fbb8-11ea-8a42-05b621cb7a62": true
                    },
                    "subject": "test send mail with inline image",
                    "from": [
                        {
                            "name": "Hong Quan TRAN",
                            "email": "hqtran@linagora.com"
                        }
                    ],
                    "to": [
                        {
                            "name": null,
                            "email": "quan.tranhong1999@gmail.com"
                        }
                    ],
                    "cc": [],
                    "bcc": [],
                    "replyTo": [
                        {
                            "name": null,
                            "email": "hqtran@linagora.com"
                        }
                    ],
                    "htmlBody": [
                        {
                            "partId": "bfe484f0-0d1a-11ef-96ca-81981cc56f01",
                            "type": "text/html"
                        }
                    ],
                    "attachments": [
                        {
                            "blobId": "uploads-b2e11160-0d1a-11ef-9d4e-7d1058f3d6e1",
                            "size": 114732,
                            "name": "studentCard.jpeg",
                            "type": "image/jpeg",
                            "charset": "base64",
                            "disposition": "inline",
                            "cid": "b363d5f0-0d1a-11ef-96ca-81981cc56f01"
                        }
                    ],
                    "bodyValues": {
                        "bfe484f0-0d1a-11ef-96ca-81981cc56f01": {
                            "value": "<div style=\"line-height: 100%;\">body with image</div><div style=\"line-height: 100%;\"><br style=\"line-height: 100%;\"></div><div style=\"line-height: 100%;\"><br></div><div><img src=\"cid:b363d5f0-0d1a-11ef-96ca-81981cc56f01\" alt=\"studentCard\" style=\"max-width: 100%;\"></div><div style=\"line-height: 100%;\"><br><br style=\"line-height: 100%;\"></div><div style=\"line-height: 100%;\"><br style=\"line-height: 100%;\"><br style=\"line-height: 100%;\"></div><div class=\"tmail-signature\" style=\"display: block; line-height: 100%;\"><span class=\"tmail_signature_prefix\" style=\"line-height: 100%;\">--&nbsp;</span><br style=\"line-height: 100%;\"><p style=\"line-height: 100%;\">my signature with image</p><p style=\"line-height: 100%;\"><img src=\"data:image/jpg;base64,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\" data-filename=\"portrait.jpg\" alt=\"Image in my signature\" style=\"max-width: 100%; line-height: 100%;\"><br style=\"line-height: 100%;\"></p><br style=\"line-height: 100%;\"></div>",
                            "isEncodingProblem": false,
                            "isTruncated": false
                        }
                    },
                    "header:User-Agent:asText": "Team-Mail/0.11.3 Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"
                }
            }
        },
        "c0"
    ],
    [
        "EmailSubmission/set",
        {
            "accountId": "8e1534a48ceb6a660b23b18d0de5fba066b2179de5872d4426f90a2cc931095d",
            "create": {
                "bfe52131-0d1a-11ef-96ca-81981cc56f01": {
                    "identityId": "dfbeef10-f017-44f5-b9ae-206c4cdd3ca5",
                    "emailId": "#bfe52130-0d1a-11ef-96ca-81981cc56f01",
                    "envelope": {
                        "mailFrom": {
                            "email": "hqtran@linagora.com"
                        },
                        "rcptTo": [
                            {
                                "email": "quan.tranhong1999@gmail.com"
                            }
                        ]
                    }
                }
            },
            "onSuccessUpdateEmail": {
                "#bfe52131-0d1a-11ef-96ca-81981cc56f01": {
                    "mailboxIds/ca77e230-fbb8-11ea-8a42-05b621cb7a62": true,
                    "mailboxIds/ca739c70-fbb8-11ea-8a42-05b621cb7a62": null,
                    "keywords/$seen": true,
                    "keywords/$draft": null
                }
            }
        },
        "c1"
    ]
]

@Arsnael
Copy link
Member Author

Arsnael commented May 8, 2024

multipart, I think what @quantranhong1999 is trying to propose is something similar to inline images in body using the CID (that shows in gmail)

Does that sound possible to you?

I thought about it too, but I ain't sure. It sounds adding a lot of complexity frontend side, also when updating a signature could have an edge case lying.

Also in your example uploading the image using jmap upload route is not enough, as the upload bucket cleans up oldest files usually after reaching a certain hidden quota for the user, might need to move it to an other bucket . We would still need some way to clean that up.

Maybe the initial proposition by Benoit could still be used (to be able to manage identity images by jmap) but instead of having a public uri, we could just do as you say, including the PublicAsset as a cid.

@vttranlina
Copy link
Member

This way uses the sending email with the inline attachment nature of email, GMail does not know and does not need to know how TMail manages the blob.

I tried to download the email (eml file) on the Gmail side, then saw it is a base64 image,
blodId - cid is just a logic in tmail side,

@chibenwa
Copy link
Member

chibenwa commented May 8, 2024

We can directly use the public URL from S3 (OVH), then don't need to forward to jmap.linagora.com server

This extension allow this, yes!

Agree we can try, though current blob store is not suited for this.

I would then prefer it to be served from a distinct bucket that TMail base one (in order not to impact safety and confidentiallity of regular user data).

The current blob store is not suited for this though we can likely have a dedicated tmail component for this and use our own s3client dedicated for this use. (with lower thread resources). Or find a way to reuse the one of the S3blobStoreDAO (likely better to extract a S3ClientFactory on james side and inject it!)

@chibenwa
Copy link
Member

chibenwa commented May 8, 2024

@quantranhong1999 inlined attachments with CID comes with several major drawbacks:

  • 1/ The image binary data is stored on each and every email. That quickly makes for a lot of data. With the http link that's not the case.
  • 2/ Composing with CID would mean we get to reference the attachment content forever and that is hard to do! We would need to modify the Identity object for that. THis means only tmail would be able to use the resulting signature. With the https that's not the case: every JMAP client can use the signature, only tmail can edit it (that's ok)
  • 3/ Uploading the attachment data every time you send a mail?
  • 4/ Heavy burdon on the mobile team.

I would like us to go with the https link suggestion. If fastmail do this, they already weighted the pros and cons for us.

(What you describe is by the way the dirty uggly hacky solution: let's keep clear from this!)

@Arsnael
Copy link
Member Author

Arsnael commented May 9, 2024

From discussion with the team and mobile team:

  • if using route to expose public uri of the image on our side: do we need some routine in the edge case that maybe for example the dns change? Like for example linagora.com => lingora.fr, what about all the existing assets with linagora.com url?
  • mobile team wondering how they should proceed on their side, we think upload image via jmap upload route, then using the /set create method, from which they should get back in the response the server set field publicURI that they can use to put in an image tag with the url?
  • interoperability question: what happens if we set up a signature with image with tmail client and then use an other client that does not support that extension?
  • maybe we can propose an easier design? in the current one proposed, we might need two tables with cassandra: one to represent the public assets, one maybe having identityId as PK and the public assets it links to to ease the search. What about maybe having in publicAsset table just one identityId (could be part of PK with id) and rely on deduplication with the blob store? Maybe we could have duplicated data on other columns but it's small, also we don't think lot of users have multiple identities, and if maybe not often same images among signatures. That would simplify the design and allow to just have one cassandra table instead of maybe 2?
  • when creating an identity, if we upload an image to the signature, identity does not exist yet... So need to create the public asset with identityIds to null, then updating it after creating the identity? Might be a bit tricky on the front side
  • if using S3 public links, question raised about the cost, as you have to pay for traffic it seems? (like if I send a thousand mails with an inline signature) Tung knows it's the case with AWS service, what about OVH? Internal traffic (tmail asking for S3 blob) free, but external traffic (s3 public uri) has a cost
  • miss a username column in publicAsset object (/get all assets of user for example?)
  • if want to search publicAssets belonging to one identity, we might need to add a /query method as well, with IdentityId as a filter option?
  • frontend side: img html tag with maybe id property set to PublicAsset id so they can fetch directly it with /get method, also making sure it's not maybe a public uri from an other website?
  • implies we need a quota for those public assets per user (publicAssetTotalSize)

I think we should discuss about it with PO monday in tmail meeting to clarify all of this, as a lot of concerns have been raised

@chibenwa
Copy link
Member

chibenwa commented May 9, 2024

if using route to expose public uri of the image on our side: do we need some routine in the edge case that maybe for example the dns change? Like for example linagora.com => lingora.fr, what about all the existing assets with linagora.com url?

Overkill IMO

mobile team wondering how they should proceed on their side, we think upload image via jmap upload route, then using the /set create method, from which they should get back in the response the server set field publicURI that they can use to put in an image tag with the url?

Yes

interoperability question: what happens if we set up a signature with image with tmail client and then use an other client that does not support that extension?

The other client would be able to use the link generated by tmail. All good.

maybe we can propose an easier design? in the current one proposed, we might need two tables with cassandra: one to represent the public assets, one maybe having identityId as PK and the public assets it links to to ease the search. What about maybe having in publicAsset table just one identityId (could be part of PK with id) and rely on deduplication with the blob store? Maybe we could have duplicated data on other columns but it's small, also we don't think lot of users have multiple identities, and if maybe not often same images among signatures. That would simplify the design and allow to just have one cassandra table instead of maybe 2?

IMO we can...

PK username
CK assetId
C blobId
C contentType

The link can be:

https://jmap.linagora.com/publicAsset/{accountId}/{assetId}

Pretty sure that way it is one table.

Note: leaking the username in the URL (as accountId) is OK as I already get it from sender mail address in the mail in the first place.

when creating an identity, if we upload an image to the signature, identity does not exist yet... So need to create the public asset with identityIds to null, then updating it after creating the identity? Might be a bit tricky on the front side

That's why I propose identityIds as a separate entity.

THe flow would be:

  • a Upload your binary data
  • b Create the public asset
  • c Create the identity
  • d Update the public asset with the identityId

Note: b, c, d can be easily done in one roundtrip (one JMAP request)

if using S3 public links, question raised about the cost, as you have to pay for traffic it seems? (like if I send a thousand mails with an inline signature) Tung knows it's the case with AWS service, what about OVH? Internal traffic (tmail asking for S3 blob) free, but external traffic (s3 public uri) has a cost

Read costs are the same wether you proxy the read or not as far as I know...

Interested to know if we can set some limitations though...

if want to search publicAssets belonging to one identity, we might need to add a /query method as well, with IdentityId as a filter option?

Or just list all the public assets of a user.

For the time being we can expect the cardinality to be low.

frontend side: img html tag with maybe id property set to PublicAsset id so they can fetch directly it with /get method, also making sure it's not maybe a public uri from an other website?

(Or a HTML comment?)

@chibenwa
Copy link
Member

chibenwa commented May 9, 2024

implies we need a quota for those public assets per user (publicAssetTotalSize)

Yes. Static configuration IMO is OK for this.

@chibenwa
Copy link
Member

chibenwa commented May 9, 2024

I think we should discuss about it with PO monday in tmail meeting to clarify all of this, as a lot of concerns have been raised

Did I clarified things?

:-p

@Arsnael
Copy link
Member Author

Arsnael commented May 14, 2024

@team: I think the list of tickets could be:

PublicAsset JMAP object:

  • id (serverSet)
  • publicURI (serverSet)
  • size (serverSet)
  • username
  • blobId
  • identityIds: Id[]|null, default to null

Cassandra table:

PK username
CK assetId
C blobId
C contentType
C identityIds (frozen set?)

Public URI (not stored, built with the response):

{jmap_endpoint}/publicAsset/{accountId}/{assetId}

Did I miss or misunderstood something? I think we can start writing tickets based on this for thursday

@quantranhong1999
Copy link
Member

@team: I think the list of tickets could be:

Missing the JMAP specs ticket and repository tickets IMO.

@Arsnael
Copy link
Member Author

Arsnael commented May 14, 2024

Missing the JMAP specs ticket and repository tickets IMO.

JMAP spec that's pretty much the jmap doc for me

Repository I would likely put that with DAO (just wasn't precise enough) but do you think it should be separated?

@quantranhong1999
Copy link
Member

quantranhong1999 commented May 14, 2024

Repository I would likely put that with DAO (just wasn't precise enough) but do you think it should be separated?

Normally we do:

  • Repository + memory implementation
  • Cassandra implementation
  • now Postgress implementation too

I think we can put the DAO in the same implementation ticket.

@Arsnael
Copy link
Member Author

Arsnael commented May 14, 2024

You are right, updated the list

@vttranlina
Copy link
Member

vttranlina commented May 15, 2024

Related to OVH S3 public traffic price:

On the OVH site don't write details exactly the price, it just

Outbound public network traffic is included in the price of instances on all locations, except the Asia-Pacific region (Singapore and Sydney). In both regions, 1 TB/month of outbound public traffic is included for each Public Cloud project. Beyond this quota, each additional GB of traffic is charged. Inbound network traffic from the public network is included in all cases and in all regions.

Ref : https://www.ovhcloud.com/en/public-cloud/prices/

I asked @ducnm0711 , We have to try it out to measure it

@Arsnael
Copy link
Member Author

Arsnael commented May 15, 2024

Dont think we should think too much about it for now though, but thanks for having a look

@Arsnael
Copy link
Member Author

Arsnael commented May 15, 2024

Coming back on what I said, likely better to have a dedicated ticket for jmap specs publicasset

@Arsnael Arsnael removed the grooming label May 20, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants