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

add support for system mta though sendmail #3147

Merged
merged 4 commits into from
Feb 12, 2023
Merged

Conversation

soruh
Copy link
Contributor

@soruh soruh commented Jan 16, 2023

This PR enables using lettre's SendmailTransport in Vaultwarden.

It adds two configuration options:
- USE_SENDMAIL wether to use sendmail instead of directly connecting to a SMTP server
- SENDMAIL_COMMAND what sendmail command to use. By default the one from the $PATH is used, but I think there are cases where it makes sense to specify a different one

Supporting the system MTA allows for more flexible mail configuration without too much effort and does not require packaging any sendmail client as assumed in #2198.

While there are other usecases like sending through a local mailserver without having to create a dedicated SMTP Account as mentioned in #2198, my specific usecase for this is the following:

I have msmtp configured with an account that all applications use without me having to paste the SMTP configuration and credentials into each of their configs and allows me to only have to maintain the one SMTP configuration instead of potentially forgetting one (not fun).

Testing can be done as follows:

> sudo pacman -S msmtp-mta
> sudo tee /etc/msmtprc << EOF
defaults

account default
auth on
from <from>
host <hostname>
password <passowrd>
tls on
user <username>
EOF
> tee .env << EOF
USE_SENDMAIL = true
SMTP_FROM = "bitwarden@tld"
EOF
> cargo run [...] # run vaultwarden

log into vaultwarden, click
User icon in top right > account settings > security > Two-step login > Email > Manage > Send Email

src/config.rs Outdated Show resolved Hide resolved
src/config.rs Outdated Show resolved Hide resolved
Copy link
Collaborator

@BlackDex BlackDex left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think there are some adjustments missing here:

vaultwarden/src/config.rs

Lines 1046 to 1049 in 9991563

pub fn mail_enabled(&self) -> bool {
let inner = &self.inner.read().unwrap().config;
inner._enable_smtp && inner.smtp_host.is_some()
}

src/config.rs Outdated Show resolved Hide resolved
@soruh
Copy link
Contributor Author

soruh commented Jan 17, 2023

I think there are some adjustments missing here:

vaultwarden/src/config.rs

Lines 1046 to 1049 in 9991563

pub fn mail_enabled(&self) -> bool {
let inner = &self.inner.read().unwrap().config;
inner._enable_smtp && inner.smtp_host.is_some()
}

Fixed in 41faff5

Copy link
Collaborator

@BlackDex BlackDex left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you btw also add these variables to the .env.template with the same comments :)

@soruh
Copy link
Contributor Author

soruh commented Jan 17, 2023

Oh, I missed that. Might be because it was hidden :)

@soruh soruh requested a review from BlackDex January 19, 2023 08:43
Copy link
Collaborator

@BlackDex BlackDex left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, i just tested this locally, and it seems to work fine.

Though it does add extra config items, i do think this could be useful for some people.
I know it has been requested in the past. And since there are more and more standalone builds made of Vaultwarden, like for Arch Linux, Alpine, Nixos, FreeBSD, Void etc... this could be useful.

There is just one item i think we may need to address. If someone provides SENDMAIL_COMMAND i think it should be the full path to the executable, and therefor, i think we should validate if that file exists or not during the config validation. This will prevent users from configuring this variable, but a non working environment.

Other then that, LGTM.

@soruh
Copy link
Contributor Author

soruh commented Jan 20, 2023

Thank you, that's a good point. I'll add that when I get home.

@soruh
Copy link
Contributor Author

soruh commented Jan 20, 2023

It looks like the SENDMAIL_COMMAND is ultimately passed into tokio::process::Command so if it's an absolute path it will just be executed but if it's not it will be looked up in the $PATH. I see two options to check validity:

  • force the command to be an absolute path and check if the file exists and is executable
  • allow commands in the $PATH and figure out a way to check if the command is valid (like spawning a tokio::process::Command with the command and checking for ENOENT)

I think the latter is definitely more involved, but there could be use cases where it's needed. Do you have any preference, or a better way to do this?

@soruh
Copy link
Contributor Author

soruh commented Jan 20, 2023

A third option would be to actually iterate through the PATH as suggested here but that doesn't seem reasonable to me.

@soruh
Copy link
Contributor Author

soruh commented Jan 20, 2023

I think I would prefer forcing an absolute path

@BlackDex
Copy link
Collaborator

I would say the first. Make a path mandatory to be absolute.
For one, it feels safer to me and if someone wants to override it, they probably know the full path.

Checking if it is executable is going to be difficult. That isn't supported on Windows. And probably to much i think.

@soruh
Copy link
Contributor Author

soruh commented Jan 20, 2023

Great, I agree. I'll implement that when I'm home then.

@soruh
Copy link
Contributor Author

soruh commented Jan 20, 2023

07f754b adds the check. If you think the check for executability is too complicated I can remove it again.

.env.template Outdated Show resolved Hide resolved
src/config.rs Outdated Show resolved Hide resolved
src/config.rs Outdated Show resolved Hide resolved
src/config.rs Show resolved Hide resolved
src/mail.rs Outdated Show resolved Hide resolved
@soruh
Copy link
Contributor Author

soruh commented Jan 25, 2023

I have just pushed 82452b3 which adds the check using the which crate. If there is a consensus on what to do we can either revert it for the old behavior or keep it.

@soruh
Copy link
Contributor Author

soruh commented Feb 2, 2023

I feel like it would be unfortunate for this to get stuck on something that feels pretty minor to me. I would really like this to be in the next version when it is released as I need it myself :). Is there a way a consensus can be found for this? Maybe a compromise of not using the which crate for now, but having the configuration description be more adamant about having sendmail installed would be acceptable?

@BlackDex
Copy link
Collaborator

BlackDex commented Feb 2, 2023

I might have some time to check this this evening (UTC). But you do need to rebase this PR it looks like.

@soruh
Copy link
Contributor Author

soruh commented Feb 2, 2023

Do you know if there is a way for github to automatically squash PR commits or should I clean up the commit history a bit?

@BlackDex
Copy link
Collaborator

BlackDex commented Feb 2, 2023

Not that i know. I do stuff like that via the cli with a reset --soft.

@soruh soruh force-pushed the main branch 2 times, most recently from c23a6bd to 8cba7e7 Compare February 2, 2023 17:35
src/config.rs Outdated Show resolved Hide resolved
src/config.rs Outdated Show resolved Hide resolved
@soruh
Copy link
Contributor Author

soruh commented Feb 2, 2023

Thank's alot for your help on this @BlackDex!

@soruh
Copy link
Contributor Author

soruh commented Feb 12, 2023

Curious that git thinks there is a conflict here. I think it assumes my new function is the same as the function added on main. I've rebased it now...

@dani-garcia
Copy link
Owner

Yeah, I had trouble with git conflicts while trying to batch merge all the PR's manually, not sure why. Ended up merging them one by one.

We've just relicensed the project as AGPL but this PR was started before the license change was merged, so i'd appreciate if you can add your comment to the relicensing agreement, even if it's just a small formality by now:
#2450

Thanks for your contribution!

@soruh
Copy link
Contributor Author

soruh commented Feb 12, 2023

done

@dani-garcia dani-garcia merged commit 32dfa41 into dani-garcia:main Feb 12, 2023
Stackclash referenced this pull request in Stackclash/home-cluster May 25, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [vaultwarden/server](https://togithub.com/dani-garcia/vaultwarden) |
minor | `1.27.0` -> `1.28.1` |

---

### Release Notes

<details>
<summary>dani-garcia/vaultwarden</summary>

###
[`v1.28.1`](https://togithub.com/dani-garcia/vaultwarden/releases/tag/1.28.1)

[Compare
Source](https://togithub.com/dani-garcia/vaultwarden/compare/1.28.0...1.28.1)

#### What's Changed

- Decode knowndevice `X-Request-Email` as base64url with no padding by
[@&#8203;jjlin](https://togithub.com/jjlin) in
[https://github.com/dani-garcia/vaultwarden/pull/3376](https://togithub.com/dani-garcia/vaultwarden/pull/3376)
- Fix abort on password reset mail error by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[https://github.com/dani-garcia/vaultwarden/pull/3390](https://togithub.com/dani-garcia/vaultwarden/pull/3390)
- support `/users/<uuid>/invite/resend` admin api by
[@&#8203;nikolaevn](https://togithub.com/nikolaevn) in
[https://github.com/dani-garcia/vaultwarden/pull/3397](https://togithub.com/dani-garcia/vaultwarden/pull/3397)
- always return KdfMemory and KdfParallelism by
[@&#8203;stefan0xC](https://togithub.com/stefan0xC) in
[https://github.com/dani-garcia/vaultwarden/pull/3398](https://togithub.com/dani-garcia/vaultwarden/pull/3398)
- Fix sending out multiple websocket notifications by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[https://github.com/dani-garcia/vaultwarden/pull/3405](https://togithub.com/dani-garcia/vaultwarden/pull/3405)
- Revert setcap, update rust and crates by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[https://github.com/dani-garcia/vaultwarden/pull/3403](https://togithub.com/dani-garcia/vaultwarden/pull/3403)

#### New Contributors

- [@&#8203;nikolaevn](https://togithub.com/nikolaevn) made their first
contribution in
[https://github.com/dani-garcia/vaultwarden/pull/3397](https://togithub.com/dani-garcia/vaultwarden/pull/3397)

**Full Changelog**:
dani-garcia/vaultwarden@1.28.0...1.28.1

###
[`v1.28.0`](https://togithub.com/dani-garcia/vaultwarden/releases/tag/1.28.0)

[Compare
Source](https://togithub.com/dani-garcia/vaultwarden/compare/1.27.0...1.28.0)

#### Major changes

- The project has changed license to the
[**AGPLv3**](https://togithub.com/dani-garcia/vaultwarden/blob/main/LICENSE.txt).
If you're hosting a Vaultwarden instance, you now have a requirement to
distribute the Vaultwarden source code to your users if they request it.
The source code, and any changes you have made, need to be under the
same AGPLv3 license. If you simply use our code without modifications,
just pointing them to this repository is enough.
- Added support for **Argon2** key derivation on the clients. To enable
it for your account, make sure all your clients are using version
v2023.2.0 or greater, then go to account settings > security > keys, and
change the algorithm from PBKDF2 to Argon2id.
- Added support for **Argon2** key derivation for the admin page token.
To update your admin token to use it, [check the
wiki](https://togithub.com/dani-garcia/vaultwarden/wiki/Enabling-admin-page#secure-the-admin_token)
- New **alternative registries** for the docker images are available (In
**BETA** for now):
- **Github Container Registry**: https://ghcr.io/dani-garcia/vaultwarden
    -   **Quay**: https://quay.io/vaultwarden/server

#### What's Changed

- Remove patched multer-rs by
[@&#8203;manofthepeace](https://togithub.com/manofthepeace) in
[https://github.com/dani-garcia/vaultwarden/pull/2968](https://togithub.com/dani-garcia/vaultwarden/pull/2968)
- Removed unsafe-inline JS from CSP and other fixes by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[https://github.com/dani-garcia/vaultwarden/pull/3058](https://togithub.com/dani-garcia/vaultwarden/pull/3058)
- Validate YUBICO_SERVER string
([#&#8203;3003](https://togithub.com/dani-garcia/vaultwarden/issues/3003))
by [@&#8203;BlackDex](https://togithub.com/BlackDex) in
[https://github.com/dani-garcia/vaultwarden/pull/3059](https://togithub.com/dani-garcia/vaultwarden/pull/3059)
- Log message to stderr if LOG_FILE is not writable by
[@&#8203;pjsier](https://togithub.com/pjsier) in
[https://github.com/dani-garcia/vaultwarden/pull/3061](https://togithub.com/dani-garcia/vaultwarden/pull/3061)
- Update WebSocket Notifications by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[https://github.com/dani-garcia/vaultwarden/pull/3076](https://togithub.com/dani-garcia/vaultwarden/pull/3076)
- Optimize config loading messages by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[https://github.com/dani-garcia/vaultwarden/pull/3092](https://togithub.com/dani-garcia/vaultwarden/pull/3092)
- Percent-encode org_name in links by
[@&#8203;am97](https://togithub.com/am97) in
[https://github.com/dani-garcia/vaultwarden/pull/3093](https://togithub.com/dani-garcia/vaultwarden/pull/3093)
- Fix failing large note imports by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[https://github.com/dani-garcia/vaultwarden/pull/3087](https://togithub.com/dani-garcia/vaultwarden/pull/3087)
- Change `text/plain` API responses to `application/json` by
[@&#8203;jjlin](https://togithub.com/jjlin) in
[https://github.com/dani-garcia/vaultwarden/pull/3124](https://togithub.com/dani-garcia/vaultwarden/pull/3124)
- Remove `shrink-to-fit=no` from viewport-meta-tag by
[@&#8203;redwerkz](https://togithub.com/redwerkz) in
[https://github.com/dani-garcia/vaultwarden/pull/3126](https://togithub.com/dani-garcia/vaultwarden/pull/3126)
- Update dependencies and MSRV by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[https://github.com/dani-garcia/vaultwarden/pull/3128](https://togithub.com/dani-garcia/vaultwarden/pull/3128)
- Resolve uninlined_format_args clippy warnings by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[https://github.com/dani-garcia/vaultwarden/pull/3065](https://togithub.com/dani-garcia/vaultwarden/pull/3065)
- Update Rust to v1.66.1 to patch CVE by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[https://github.com/dani-garcia/vaultwarden/pull/3136](https://togithub.com/dani-garcia/vaultwarden/pull/3136)
- Fix remaining inline format by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[https://github.com/dani-garcia/vaultwarden/pull/3130](https://togithub.com/dani-garcia/vaultwarden/pull/3130)
- Use more modern meta tag for charset encoding by
[@&#8203;redwerkz](https://togithub.com/redwerkz) in
[https://github.com/dani-garcia/vaultwarden/pull/3131](https://togithub.com/dani-garcia/vaultwarden/pull/3131)
- fix (2fa.directory): Allow api.2fa.directory, and remove 2fa.directory
by [@&#8203;GeekCornerGH](https://togithub.com/GeekCornerGH) in
[https://github.com/dani-garcia/vaultwarden/pull/3132](https://togithub.com/dani-garcia/vaultwarden/pull/3132)
- Optimize CipherSyncData for very large vaults by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[https://github.com/dani-garcia/vaultwarden/pull/3133](https://togithub.com/dani-garcia/vaultwarden/pull/3133)
- Add avatar color support by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[https://github.com/dani-garcia/vaultwarden/pull/3134](https://togithub.com/dani-garcia/vaultwarden/pull/3134)
- Add MFA icon to org member overview by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[https://github.com/dani-garcia/vaultwarden/pull/3135](https://togithub.com/dani-garcia/vaultwarden/pull/3135)
- Minor refactoring concering user.setpassword by
[@&#8203;sirux88](https://togithub.com/sirux88) in
[https://github.com/dani-garcia/vaultwarden/pull/3139](https://togithub.com/dani-garcia/vaultwarden/pull/3139)
- Validate note sizes on key-rotation. by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[https://github.com/dani-garcia/vaultwarden/pull/3157](https://togithub.com/dani-garcia/vaultwarden/pull/3157)
- Update KDF Configuration and processing by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[https://github.com/dani-garcia/vaultwarden/pull/3163](https://togithub.com/dani-garcia/vaultwarden/pull/3163)
- Remove `arm32v6`-specific tag by
[@&#8203;jjlin](https://togithub.com/jjlin) in
[https://github.com/dani-garcia/vaultwarden/pull/3164](https://togithub.com/dani-garcia/vaultwarden/pull/3164)
- Re-License Vaultwarden to AGPLv3 by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[https://github.com/dani-garcia/vaultwarden/pull/2561](https://togithub.com/dani-garcia/vaultwarden/pull/2561)
- Admin password reset by
[@&#8203;sirux88](https://togithub.com/sirux88) in
[https://github.com/dani-garcia/vaultwarden/pull/3116](https://togithub.com/dani-garcia/vaultwarden/pull/3116)
- "Spell-Jacking" mitigation ~ prevent sensitive data leak … by
[@&#8203;dlehammer](https://togithub.com/dlehammer) in
[https://github.com/dani-garcia/vaultwarden/pull/3145](https://togithub.com/dani-garcia/vaultwarden/pull/3145)
- Allow listening on privileged ports (below 1024) as non-root by
[@&#8203;jjlin](https://togithub.com/jjlin) in
[https://github.com/dani-garcia/vaultwarden/pull/3170](https://togithub.com/dani-garcia/vaultwarden/pull/3170)
- don't nullify key when editing emergency access by
[@&#8203;stefan0xC](https://togithub.com/stefan0xC) in
[https://github.com/dani-garcia/vaultwarden/pull/3215](https://togithub.com/dani-garcia/vaultwarden/pull/3215)
- Fix trailing slash not getting removed from domain by
[@&#8203;BlockListed](https://togithub.com/BlockListed) in
[https://github.com/dani-garcia/vaultwarden/pull/3228](https://togithub.com/dani-garcia/vaultwarden/pull/3228)
- Generate distinct log messages for regex vs. IP blacklisting. by
[@&#8203;kpfleming](https://togithub.com/kpfleming) in
[https://github.com/dani-garcia/vaultwarden/pull/3231](https://togithub.com/dani-garcia/vaultwarden/pull/3231)
- allow editing/unhiding by group by
[@&#8203;farodin91](https://togithub.com/farodin91) in
[https://github.com/dani-garcia/vaultwarden/pull/3108](https://togithub.com/dani-garcia/vaultwarden/pull/3108)
- Fix Javascript issue on non sqlite databases by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[https://github.com/dani-garcia/vaultwarden/pull/3167](https://togithub.com/dani-garcia/vaultwarden/pull/3167)
- add argon2 kdf fields by [@&#8203;tessus](https://togithub.com/tessus)
in
[https://github.com/dani-garcia/vaultwarden/pull/3210](https://togithub.com/dani-garcia/vaultwarden/pull/3210)
- add support for system mta though sendmail by
[@&#8203;soruh](https://togithub.com/soruh) in
[https://github.com/dani-garcia/vaultwarden/pull/3147](https://togithub.com/dani-garcia/vaultwarden/pull/3147)
- Updated Rust and crates by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[https://github.com/dani-garcia/vaultwarden/pull/3234](https://togithub.com/dani-garcia/vaultwarden/pull/3234)
- docs: add build status badge in readme by
[@&#8203;R3DRUN3](https://togithub.com/R3DRUN3) in
[https://github.com/dani-garcia/vaultwarden/pull/3245](https://togithub.com/dani-garcia/vaultwarden/pull/3245)
- Validate all needed fields for client API login by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[https://github.com/dani-garcia/vaultwarden/pull/3251](https://togithub.com/dani-garcia/vaultwarden/pull/3251)
- Fix Organization delete when groups are configured by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[https://github.com/dani-garcia/vaultwarden/pull/3252](https://togithub.com/dani-garcia/vaultwarden/pull/3252)
- Fix Collection Read Only access for groups by
[@&#8203;Misterbabou](https://togithub.com/Misterbabou) in
[https://github.com/dani-garcia/vaultwarden/pull/3254](https://togithub.com/dani-garcia/vaultwarden/pull/3254)
- Make the admin session lifetime adjustable by
[@&#8203;mittler-works](https://togithub.com/mittler-works) in
[https://github.com/dani-garcia/vaultwarden/pull/3262](https://togithub.com/dani-garcia/vaultwarden/pull/3262)
- Add function to fetch user by email address by
[@&#8203;mittler-works](https://togithub.com/mittler-works) in
[https://github.com/dani-garcia/vaultwarden/pull/3263](https://togithub.com/dani-garcia/vaultwarden/pull/3263)
- Fix vault item display in org vault view by
[@&#8203;jjlin](https://togithub.com/jjlin) in
[https://github.com/dani-garcia/vaultwarden/pull/3277](https://togithub.com/dani-garcia/vaultwarden/pull/3277)
- Add confirmation for removing 2FA and deauthing sessions in admin
panel by [@&#8203;JCBird1012](https://togithub.com/JCBird1012) in
[https://github.com/dani-garcia/vaultwarden/pull/3282](https://togithub.com/dani-garcia/vaultwarden/pull/3282)
- Some Admin Interface updates by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[https://github.com/dani-garcia/vaultwarden/pull/3288](https://togithub.com/dani-garcia/vaultwarden/pull/3288)
- Fix the web-vault v2023.2.0 API calls by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[https://github.com/dani-garcia/vaultwarden/pull/3281](https://togithub.com/dani-garcia/vaultwarden/pull/3281)
- Fix confirmation for removing 2FA and deauthing sessions in admin
panel by [@&#8203;dpinse](https://togithub.com/dpinse) in
[https://github.com/dani-garcia/vaultwarden/pull/3290](https://togithub.com/dani-garcia/vaultwarden/pull/3290)
- Admin token Argon2 hashing support by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[https://github.com/dani-garcia/vaultwarden/pull/3289](https://togithub.com/dani-garcia/vaultwarden/pull/3289)
- Add HEAD routes to avoid spurious error messages by
[@&#8203;jjlin](https://togithub.com/jjlin) in
[https://github.com/dani-garcia/vaultwarden/pull/3307](https://togithub.com/dani-garcia/vaultwarden/pull/3307)
- Fix web-vault Member UI show/edit/save by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[https://github.com/dani-garcia/vaultwarden/pull/3315](https://togithub.com/dani-garcia/vaultwarden/pull/3315)
- Upd Crates, Rust, MSRV, GHA and remove Backtrace by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[https://github.com/dani-garcia/vaultwarden/pull/3310](https://togithub.com/dani-garcia/vaultwarden/pull/3310)
- Add support for `/api/devices/knowndevice` with HTTP header params by
[@&#8203;jjlin](https://togithub.com/jjlin) in
[https://github.com/dani-garcia/vaultwarden/pull/3329](https://togithub.com/dani-garcia/vaultwarden/pull/3329)
- Update Rust, MSRV and Crates by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[https://github.com/dani-garcia/vaultwarden/pull/3348](https://togithub.com/dani-garcia/vaultwarden/pull/3348)
- Merge ClientIp with Headers. by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[https://github.com/dani-garcia/vaultwarden/pull/3332](https://togithub.com/dani-garcia/vaultwarden/pull/3332)
- add endpoints to bulk delete collections/groups by
[@&#8203;stefan0xC](https://togithub.com/stefan0xC) in
[https://github.com/dani-garcia/vaultwarden/pull/3354](https://togithub.com/dani-garcia/vaultwarden/pull/3354)
- Add support for Quay.io and GHCR.io as registries by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[https://github.com/dani-garcia/vaultwarden/pull/3363](https://togithub.com/dani-garcia/vaultwarden/pull/3363)
- Some small fixes and updates by
[@&#8203;BlackDex](https://togithub.com/BlackDex) in
[https://github.com/dani-garcia/vaultwarden/pull/3366](https://togithub.com/dani-garcia/vaultwarden/pull/3366)
- Update web vault to v2023.3.0 by
[@&#8203;dani-garcia](https://togithub.com/dani-garcia)

#### New Contributors

- [@&#8203;manofthepeace](https://togithub.com/manofthepeace) made their
first contribution in
[https://github.com/dani-garcia/vaultwarden/pull/2968](https://togithub.com/dani-garcia/vaultwarden/pull/2968)
- [@&#8203;pjsier](https://togithub.com/pjsier) made their first
contribution in
[https://github.com/dani-garcia/vaultwarden/pull/3061](https://togithub.com/dani-garcia/vaultwarden/pull/3061)
- [@&#8203;am97](https://togithub.com/am97) made their first
contribution in
[https://github.com/dani-garcia/vaultwarden/pull/3093](https://togithub.com/dani-garcia/vaultwarden/pull/3093)
- [@&#8203;redwerkz](https://togithub.com/redwerkz) made their first
contribution in
[https://github.com/dani-garcia/vaultwarden/pull/3126](https://togithub.com/dani-garcia/vaultwarden/pull/3126)
- [@&#8203;sirux88](https://togithub.com/sirux88) made their first
contribution in
[https://github.com/dani-garcia/vaultwarden/pull/3139](https://togithub.com/dani-garcia/vaultwarden/pull/3139)
- [@&#8203;dlehammer](https://togithub.com/dlehammer) made their first
contribution in
[https://github.com/dani-garcia/vaultwarden/pull/3145](https://togithub.com/dani-garcia/vaultwarden/pull/3145)
- [@&#8203;BlockListed](https://togithub.com/BlockListed) made their
first contribution in
[https://github.com/dani-garcia/vaultwarden/pull/3228](https://togithub.com/dani-garcia/vaultwarden/pull/3228)
- [@&#8203;kpfleming](https://togithub.com/kpfleming) made their first
contribution in
[https://github.com/dani-garcia/vaultwarden/pull/3231](https://togithub.com/dani-garcia/vaultwarden/pull/3231)
- [@&#8203;farodin91](https://togithub.com/farodin91) made their first
contribution in
[https://github.com/dani-garcia/vaultwarden/pull/3108](https://togithub.com/dani-garcia/vaultwarden/pull/3108)
- [@&#8203;soruh](https://togithub.com/soruh) made their first
contribution in
[https://github.com/dani-garcia/vaultwarden/pull/3147](https://togithub.com/dani-garcia/vaultwarden/pull/3147)
- [@&#8203;R3DRUN3](https://togithub.com/R3DRUN3) made their first
contribution in
[https://github.com/dani-garcia/vaultwarden/pull/3245](https://togithub.com/dani-garcia/vaultwarden/pull/3245)
- [@&#8203;Misterbabou](https://togithub.com/Misterbabou) made their
first contribution in
[https://github.com/dani-garcia/vaultwarden/pull/3254](https://togithub.com/dani-garcia/vaultwarden/pull/3254)
- [@&#8203;mittler-works](https://togithub.com/mittler-works) made their
first contribution in
[https://github.com/dani-garcia/vaultwarden/pull/3262](https://togithub.com/dani-garcia/vaultwarden/pull/3262)
- [@&#8203;JCBird1012](https://togithub.com/JCBird1012) made their first
contribution in
[https://github.com/dani-garcia/vaultwarden/pull/3282](https://togithub.com/dani-garcia/vaultwarden/pull/3282)
- [@&#8203;dpinse](https://togithub.com/dpinse) made their first
contribution in
[https://github.com/dani-garcia/vaultwarden/pull/3290](https://togithub.com/dani-garcia/vaultwarden/pull/3290)

**Full Changelog**:
dani-garcia/vaultwarden@1.27.0...1.28.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "on saturday" (UTC), Automerge - At
any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://app.renovatebot.com/dashboard#github/RickCoxDev/home-cluster).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS43OS4xIiwidXBkYXRlZEluVmVyIjoiMzUuNzkuMSIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
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

Successfully merging this pull request may close these issues.

4 participants