Don't receive "Change Email" confirmation email but DO receive "New Device" email #1996

Closed
opened 2025-10-09 17:40:48 +03:00 by OVERLORD · 2 comments
Owner

Originally created by @Skaronator on GitHub.

Hi,

I'm running 1.10.0-4c07f05b on Docker Alpine with SQLite as storage backend. I tried to change the email of my Bitwarden account and need to confirm my new email but never actually receive the email on my new address.

I've setup the email in Bitwarden correctly since I do receive emails when I log in from a new device. (Just tested it again before writing this.)

I tried different email address for both, my account and the Bitwarden sender email but nothing seems to work.

Also tried to enable debug logs but everything looks fine. The POST request to /api/accounts/email-token return with a 200 (so everything OK).

[2019-09-18 20:32:54][_][TRACE] Filled peek buf with 99 bytes.
[2019-09-18 20:32:54][_][TRACE] Peek bytes: 99/512 bytes.
[2019-09-18 20:32:54][rocket::rocket][INFO] POST /api/accounts/email-token application/json; charset=utf-8:
[2019-09-18 20:32:54][_][TRACE] Routing the request: POST /api/accounts/email-token application/json; charset=utf-8
[2019-09-18 20:32:54][_][TRACE] All matches: [Route { name: Some("post_email_token"), method: Post, base: Origin { source: None, path: "/api", query: None, segment_count: [uninitialized storage] }, uri: Origin { source: None, path: "/api/accounts/email-token", query: None, segment_count: [uninitialized storage] }, rank: -4, format: None, metadata: Metadata { path_segments: [RouteSegment { string: "api", kind: Static, name: "api", index: Some(0), _part: PhantomData }, RouteSegment { string: "accounts", kind: Static, name: "accounts", index: Some(1), _part: PhantomData }, RouteSegment { string: "email-token", kind: Static, name: "email-token", index: Some(2), _part: PhantomData }], query_segments: None, fully_dynamic_query: true } }]
[2019-09-18 20:32:54][_][INFO] Matched: POST /api/accounts/email-token (post_email_token)
[2019-09-18 20:32:54][_][TRACE] DataStream::read()
[2019-09-18 20:32:54][_][TRACE] DataStream::read()
[2019-09-18 20:32:54][_][INFO] Outcome: Success
[2019-09-18 20:32:54][hyper::header][TRACE] Headers.append_raw( "Server", [82, 111, 99, 107, 101, 116] )
[2019-09-18 20:32:54][hyper::header][TRACE] Headers.append_raw( "Feature-Policy", [97, 99, 99, 101, 108, 101, 114, 111, 109, 101, 116, 101, 114, 32, 39, 110, 111, 110, 101, 39, 59, 32, 97, 109, 98, 105, 101, 110, 116, 45, 108, 105, 103, 104, 116, 45, 115, 101, 110, 115, 111, 114, 32, 39, 110, 111, 110, 101, 39, 59, 32, 97, 117, 116, 111, 112, 108, 97, 121, 32, 39, 110, 111, 110, 101, 39, 59, 32, 99, 97, 109, 101, 114, 97, 32, 39, 110, 111, 110, 101, 39, 59, 32, 101, 110, 99, 114, 121, 112, 116, 101, 100, 45, 109, 101, 100, 105, 97, 32, 39, 110, 111, 110, 101, 39, 59, 32, 102, 117, 108, 108, 115, 99, 114, 101, 101, 110, 32, 39, 110, 111, 110, 101, 39, 59, 32, 103, 101, 111, 108, 111, 99, 97, 116, 105, 111, 110, 32, 39, 110, 111, 110, 101, 39, 59, 32, 103, 121, 114, 111, 115, 99, 111, 112, 101, 32, 39, 110, 111, 110, 101, 39, 59, 32, 109, 97, 103, 110, 101, 116, 111, 109, 101, 116, 101, 114, 32, 39, 110, 111, 110, 101, 39, 59, 32, 109, 105, 99, 114, 111, 112, 104, 111, 110, 101, 32, 39, 110, 111, 110, 101, 39, 59, 32, 109, 105, 100, 105, 32, 39, 110, 111, 110, 101, 39, 59, 32, 112, 97, 121, 109, 101, 110, 116, 32, 39, 110, 111, 110, 101, 39, 59, 32, 112, 105, 99, 116, 117, 114, 101, 45, 105, 110, 45, 112, 105, 99, 116, 117, 114, 101, 32, 39, 110, 111, 110, 101, 39, 59, 32, 115, 121, 110, 99, 45, 120, 104, 114, 32, 39, 115, 101, 108, 102, 39, 32, 104, 116, 116, 112, 115, 58, 47, 47, 104, 97, 118, 101, 105, 98, 101, 101, 110, 112, 119, 110, 101, 100, 46, 99, 111, 109, 32, 104, 116, 116, 112, 115, 58, 47, 47, 116, 119, 111, 102, 97, 99, 116, 111, 114, 97, 117, 116, 104, 46, 111, 114, 103, 59, 32, 117, 115, 98, 32, 39, 110, 111, 110, 101, 39, 59, 32, 118, 114, 32, 39, 110, 111, 110, 101, 39] )
[2019-09-18 20:32:54][hyper::header][TRACE] Headers.append_raw( "Referrer-Policy", [115, 97, 109, 101, 45, 111, 114, 105, 103, 105, 110] )
[2019-09-18 20:32:54][hyper::header][TRACE] Headers.append_raw( "X-Frame-Options", [83, 65, 77, 69, 79, 82, 73, 71, 73, 78] )
[2019-09-18 20:32:54][hyper::header][TRACE] Headers.append_raw( "X-Content-Type-Options", [110, 111, 115, 110, 105, 102, 102] )
[2019-09-18 20:32:54][hyper::header][TRACE] Headers.append_raw( "X-XSS-Protection", [49, 59, 32, 109, 111, 100, 101, 61, 98, 108, 111, 99, 107] )
[2019-09-18 20:32:54][hyper::header][TRACE] Headers.append_raw( "Content-Security-Policy", [102, 114, 97, 109, 101, 45, 97, 110, 99, 101, 115, 116, 111, 114, 115, 32, 39, 115, 101, 108, 102, 39, 32, 99, 104, 114, 111, 109, 101, 45, 101, 120, 116, 101, 110, 115, 105, 111, 110, 58, 47, 47, 110, 110, 103, 99, 101, 99, 107, 98, 97, 112, 101, 98, 102, 105, 109, 110, 108, 110, 105, 105, 105, 97, 104, 107, 97, 110, 100, 99, 108, 98, 108, 98, 32, 109, 111, 122, 45, 101, 120, 116, 101, 110, 115, 105, 111, 110, 58, 47, 47, 42, 59] )
[2019-09-18 20:32:54][hyper::header][TRACE] Headers.append_raw( "Cache-Control", [110, 111, 45, 99, 97, 99, 104, 101, 44, 32, 110, 111, 45, 115, 116, 111, 114, 101, 44, 32, 109, 97, 120, 45, 97, 103, 101, 61, 48] )
[2019-09-18 20:32:54][hyper::header][TRACE] Headers.set( "Content-Length", ContentLength(0) )
[2019-09-18 20:32:54][hyper::header][TRACE] Headers.set( "Date", Date(HttpDate(Tm { tm_sec: 54, tm_min: 32, tm_hour: 20, tm_mday: 18, tm_mon: 8, tm_year: 119, tm_wday: 3, tm_yday: 260, tm_isdst: 0, tm_utcoff: 0, tm_nsec: 212313031 })) )
[2019-09-18 20:32:54][_][INFO] Response succeeded.

Do you have any ideas?

Originally created by @Skaronator on GitHub. Hi, I'm running 1.10.0-4c07f05b on Docker Alpine with SQLite as storage backend. I tried to change the email of my Bitwarden account and need to confirm my new email but never actually receive the email on my new address. I've setup the email in Bitwarden correctly since I **do** receive emails when I log in from a new device. (Just tested it again before writing this.) I tried different email address for both, my account and the Bitwarden sender email but nothing seems to work. Also tried to enable debug logs but everything looks fine. The POST request to /api/accounts/email-token return with a 200 (so everything OK). ``` [2019-09-18 20:32:54][_][TRACE] Filled peek buf with 99 bytes. [2019-09-18 20:32:54][_][TRACE] Peek bytes: 99/512 bytes. [2019-09-18 20:32:54][rocket::rocket][INFO] POST /api/accounts/email-token application/json; charset=utf-8: [2019-09-18 20:32:54][_][TRACE] Routing the request: POST /api/accounts/email-token application/json; charset=utf-8 [2019-09-18 20:32:54][_][TRACE] All matches: [Route { name: Some("post_email_token"), method: Post, base: Origin { source: None, path: "/api", query: None, segment_count: [uninitialized storage] }, uri: Origin { source: None, path: "/api/accounts/email-token", query: None, segment_count: [uninitialized storage] }, rank: -4, format: None, metadata: Metadata { path_segments: [RouteSegment { string: "api", kind: Static, name: "api", index: Some(0), _part: PhantomData }, RouteSegment { string: "accounts", kind: Static, name: "accounts", index: Some(1), _part: PhantomData }, RouteSegment { string: "email-token", kind: Static, name: "email-token", index: Some(2), _part: PhantomData }], query_segments: None, fully_dynamic_query: true } }] [2019-09-18 20:32:54][_][INFO] Matched: POST /api/accounts/email-token (post_email_token) [2019-09-18 20:32:54][_][TRACE] DataStream::read() [2019-09-18 20:32:54][_][TRACE] DataStream::read() [2019-09-18 20:32:54][_][INFO] Outcome: Success [2019-09-18 20:32:54][hyper::header][TRACE] Headers.append_raw( "Server", [82, 111, 99, 107, 101, 116] ) [2019-09-18 20:32:54][hyper::header][TRACE] Headers.append_raw( "Feature-Policy", [97, 99, 99, 101, 108, 101, 114, 111, 109, 101, 116, 101, 114, 32, 39, 110, 111, 110, 101, 39, 59, 32, 97, 109, 98, 105, 101, 110, 116, 45, 108, 105, 103, 104, 116, 45, 115, 101, 110, 115, 111, 114, 32, 39, 110, 111, 110, 101, 39, 59, 32, 97, 117, 116, 111, 112, 108, 97, 121, 32, 39, 110, 111, 110, 101, 39, 59, 32, 99, 97, 109, 101, 114, 97, 32, 39, 110, 111, 110, 101, 39, 59, 32, 101, 110, 99, 114, 121, 112, 116, 101, 100, 45, 109, 101, 100, 105, 97, 32, 39, 110, 111, 110, 101, 39, 59, 32, 102, 117, 108, 108, 115, 99, 114, 101, 101, 110, 32, 39, 110, 111, 110, 101, 39, 59, 32, 103, 101, 111, 108, 111, 99, 97, 116, 105, 111, 110, 32, 39, 110, 111, 110, 101, 39, 59, 32, 103, 121, 114, 111, 115, 99, 111, 112, 101, 32, 39, 110, 111, 110, 101, 39, 59, 32, 109, 97, 103, 110, 101, 116, 111, 109, 101, 116, 101, 114, 32, 39, 110, 111, 110, 101, 39, 59, 32, 109, 105, 99, 114, 111, 112, 104, 111, 110, 101, 32, 39, 110, 111, 110, 101, 39, 59, 32, 109, 105, 100, 105, 32, 39, 110, 111, 110, 101, 39, 59, 32, 112, 97, 121, 109, 101, 110, 116, 32, 39, 110, 111, 110, 101, 39, 59, 32, 112, 105, 99, 116, 117, 114, 101, 45, 105, 110, 45, 112, 105, 99, 116, 117, 114, 101, 32, 39, 110, 111, 110, 101, 39, 59, 32, 115, 121, 110, 99, 45, 120, 104, 114, 32, 39, 115, 101, 108, 102, 39, 32, 104, 116, 116, 112, 115, 58, 47, 47, 104, 97, 118, 101, 105, 98, 101, 101, 110, 112, 119, 110, 101, 100, 46, 99, 111, 109, 32, 104, 116, 116, 112, 115, 58, 47, 47, 116, 119, 111, 102, 97, 99, 116, 111, 114, 97, 117, 116, 104, 46, 111, 114, 103, 59, 32, 117, 115, 98, 32, 39, 110, 111, 110, 101, 39, 59, 32, 118, 114, 32, 39, 110, 111, 110, 101, 39] ) [2019-09-18 20:32:54][hyper::header][TRACE] Headers.append_raw( "Referrer-Policy", [115, 97, 109, 101, 45, 111, 114, 105, 103, 105, 110] ) [2019-09-18 20:32:54][hyper::header][TRACE] Headers.append_raw( "X-Frame-Options", [83, 65, 77, 69, 79, 82, 73, 71, 73, 78] ) [2019-09-18 20:32:54][hyper::header][TRACE] Headers.append_raw( "X-Content-Type-Options", [110, 111, 115, 110, 105, 102, 102] ) [2019-09-18 20:32:54][hyper::header][TRACE] Headers.append_raw( "X-XSS-Protection", [49, 59, 32, 109, 111, 100, 101, 61, 98, 108, 111, 99, 107] ) [2019-09-18 20:32:54][hyper::header][TRACE] Headers.append_raw( "Content-Security-Policy", [102, 114, 97, 109, 101, 45, 97, 110, 99, 101, 115, 116, 111, 114, 115, 32, 39, 115, 101, 108, 102, 39, 32, 99, 104, 114, 111, 109, 101, 45, 101, 120, 116, 101, 110, 115, 105, 111, 110, 58, 47, 47, 110, 110, 103, 99, 101, 99, 107, 98, 97, 112, 101, 98, 102, 105, 109, 110, 108, 110, 105, 105, 105, 97, 104, 107, 97, 110, 100, 99, 108, 98, 108, 98, 32, 109, 111, 122, 45, 101, 120, 116, 101, 110, 115, 105, 111, 110, 58, 47, 47, 42, 59] ) [2019-09-18 20:32:54][hyper::header][TRACE] Headers.append_raw( "Cache-Control", [110, 111, 45, 99, 97, 99, 104, 101, 44, 32, 110, 111, 45, 115, 116, 111, 114, 101, 44, 32, 109, 97, 120, 45, 97, 103, 101, 61, 48] ) [2019-09-18 20:32:54][hyper::header][TRACE] Headers.set( "Content-Length", ContentLength(0) ) [2019-09-18 20:32:54][hyper::header][TRACE] Headers.set( "Date", Date(HttpDate(Tm { tm_sec: 54, tm_min: 32, tm_hour: 20, tm_mday: 18, tm_mon: 8, tm_year: 119, tm_wday: 3, tm_yday: 260, tm_isdst: 0, tm_utcoff: 0, tm_nsec: 212313031 })) ) [2019-09-18 20:32:54][_][INFO] Response succeeded. ``` Do you have any ideas?
Author
Owner

@Skaronator commented on GitHub:

Yep thats it. Thanks @Ayitaka! The wiki is awful to search in.

@Skaronator commented on GitHub: Yep thats it. Thanks @Ayitaka! The wiki is awful to search in.
Author
Owner

@Ayitaka commented on GitHub:

According to this wiki entry, it's one of the differences between bitwarden_rs and upstream:

Changing user email

Email verification has not yet been implemented, so users just need to enter any random token to continue and the change will be applied.

@Ayitaka commented on GitHub: According to [this wiki entry](https://github.com/dani-garcia/bitwarden_rs/wiki/Differences-from-the-upstream-API-implementation), it's one of the differences between bitwarden_rs and upstream: > Changing user email > > Email verification has not yet been implemented, so users just need to enter any random token to continue and the change will be applied.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/vaultwarden#1996