iapi issueshttps://code.immerda.ch/immerda/apps/iapi/-/issues2024-01-07T20:51:22Zhttps://code.immerda.ch/immerda/apps/iapi/-/issues/38dns resource - should only allow either CNAME or A/AAAA record2024-01-07T20:51:22Zmhdns resource - should only allow either CNAME or A/AAAA recordCurrently, you can have a CNAME and a A/AAAA record, which does not work. It should only be allowed to have either a CNAME or A/AAAA recordCurrently, you can have a CNAME and a A/AAAA record, which does not work. It should only be allowed to have either a CNAME or A/AAAA recordhttps://code.immerda.ch/immerda/apps/iapi/-/issues/37Resources with deleted owners raise an error2023-09-11T19:54:44ZmhResources with deleted owners raise an errorIf you try to view a resource with a deleted owner, the following error happens:
```
Sep 11 21:50:55 iapi[25451]: 2023-09-11 21:50:55 - UncaughtThrowError - uncaught throw :not_found:
Sep 11 21:50:55 iapi[25451]: /usr/local/iapi/lib/iap...If you try to view a resource with a deleted owner, the following error happens:
```
Sep 11 21:50:55 iapi[25451]: 2023-09-11 21:50:55 - UncaughtThrowError - uncaught throw :not_found:
Sep 11 21:50:55 iapi[25451]: /usr/local/iapi/lib/iapi/resources/resource.rb:422:in `throw'
Sep 11 21:50:55 iapi[25451]: /usr/local/iapi/lib/iapi/resources/resource.rb:422:in `by_uid'
Sep 11 21:50:55 iapi[25451]: /usr/local/iapi/lib/iapi/managers/resource_manager.rb:30:in `by_uid'
Sep 11 21:50:55 iapi[25451]: /usr/local/iapi/lib/iapi/resources/resource.rb:46:in `block (2 levels) in owners'
Sep 11 21:50:55 iapi[25451]: /usr/local/iapi/lib/iapi/resources/resource.rb:45:in `catch'
Sep 11 21:50:55 iapi[25451]: /usr/local/iapi/lib/iapi/resources/resource.rb:45:in `block in owners'
Sep 11 21:50:55 iapi[25451]: /usr/local/iapi/bundler/ruby/2.5.0/gems/activerecord-5.2.8.1/lib/active_record/relation/delegation.rb:71:in `each'
Sep 11 21:50:55 iapi[25451]: /usr/local/iapi/bundler/ruby/2.5.0/gems/activerecord-5.2.8.1/lib/active_record/relation/delegation.rb:71:in `each'
Sep 11 21:50:55 iapi[25451]: /usr/local/iapi/lib/iapi/resources/resource.rb:44:in `map'
Sep 11 21:50:55 iapi[25451]: /usr/local/iapi/lib/iapi/resources/resource.rb:44:in `owners'
Sep 11 21:50:55 iapi[25451]: /usr/local/iapi/lib/iapi/resources/resource.rb:74:in `to_api'
Sep 11 21:50:55 iapi[25451]: /usr/local/iapi/lib/iapi/resources/dns_zone.rb:32:in `to_api'
Sep 11 21:50:55 iapi[25451]: /usr/local/iapi/lib/iapi/routes/resource.rb:64:in `block (3 levels) in <class:IApi>'
Sep 11 21:50:55 iapi[25451]: /usr/local/iapi/lib/iapi/routes/resource.rb:64:in `map'
Sep 11 21:50:55 iapi[25451]: /usr/local/iapi/lib/iapi/routes/resource.rb:64:in `block (2 levels) in <class:IApi>'
Sep 11 21:50:55 iapi[25451]: /usr/local/iapi/bundler/ruby/2.5.0/gems/sinatra-2.2.2/lib/sinatra/base.rb:1686:in `call'
```https://code.immerda.ch/immerda/apps/iapi/-/issues/36update security email mapping from contact resources2023-05-10T19:16:27Zo@ungehorsam.chupdate security email mapping from contact resourcesinstead of creating the security mapping emails from hosting.ods, we should sync it with the contact resources nowinstead of creating the security mapping emails from hosting.ods, we should sync it with the contact resources nowo@ungehorsam.cho@ungehorsam.chhttps://code.immerda.ch/immerda/apps/iapi/-/issues/35dns resource can override a hosting entry2022-12-04T11:01:58Zo@ungehorsam.chdns resource can override a hosting entryPossible solutions:
* prevent creation of dns entries if it already resolves
* migrate hosting.yaml to iapi and check for collisionsPossible solutions:
* prevent creation of dns entries if it already resolves
* migrate hosting.yaml to iapi and check for collisionshttps://code.immerda.ch/immerda/apps/iapi/-/issues/34dns resource is missing prio and ttl fields2022-12-04T11:00:32Zo@ungehorsam.chdns resource is missing prio and ttl fieldshttps://code.immerda.ch/immerda/apps/iapi/-/issues/33Creating new accounts without invite creates broken mailbox2023-12-01T20:34:23Zo@ungehorsam.chCreating new accounts without invite creates broken mailboxUsing the "new account" feature in admin.immer creates (maybe only under some circumstances) an account with missing encryption keys on the backend. we should remove the function or fix it...Using the "new account" feature in admin.immer creates (maybe only under some circumstances) an account with missing encryption keys on the backend. we should remove the function or fix it...https://code.immerda.ch/immerda/apps/iapi/-/issues/32pkeys are immutable on OpenSSL 3.02023-12-01T20:32:36Zmhpkeys are immutable on OpenSSL 3.0Running mailcrypt-cli on a system with OpenSSL 3.0 we get the following:
```
Invalid Token or Master Key
pkeys are immutable on OpenSSL 3.0
```
Error comes from:
`lib/iapi/utils/mail_crypt.rb:25:in `private_key=': pkeys are immutable ...Running mailcrypt-cli on a system with OpenSSL 3.0 we get the following:
```
Invalid Token or Master Key
pkeys are immutable on OpenSSL 3.0
```
Error comes from:
`lib/iapi/utils/mail_crypt.rb:25:in `private_key=': pkeys are immutable on OpenSSL 3.0 (OpenSSL::PKey::PKeyError)`
https://code.immerda.ch/immerda/apps/iapi/-/blob/master/lib/iapi/utils/mail_crypt.rb#L25https://code.immerda.ch/immerda/apps/iapi/-/issues/31Warn on wrong 2FA codes entered2022-09-20T19:40:54ZmhWarn on wrong 2FA codes enteredhttps://syslog.ravelin.com/2fa-is-missing-a-key-feature-c781c3861db
=> Notify if somebody entered valid username & password but wrong 2FAhttps://syslog.ravelin.com/2fa-is-missing-a-key-feature-c781c3861db
=> Notify if somebody entered valid username & password but wrong 2FAhttps://code.immerda.ch/immerda/apps/iapi/-/issues/30Quota must be a full number2023-03-11T10:30:54ZmhQuota must be a full numberWe must disallow quotas like: `1.5G` they break a users mailbox.We must disallow quotas like: `1.5G` they break a users mailbox.https://code.immerda.ch/immerda/apps/iapi/-/issues/29new ressource: dns zone. this will allow us dns-records later2022-12-12T21:13:18Zo@ungehorsam.chnew ressource: dns zone. this will allow us dns-records laterhttps://code.immerda.ch/immerda/apps/iapi/-/issues/28allow domain owners to create protected aliases for their domains2022-04-29T12:16:53Zo@ungehorsam.challow domain owners to create protected aliases for their domainshttps://code.immerda.ch/immerda/apps/iapi/-/issues/27Sort Domain Dropdowns2022-12-12T22:03:16Zsalamanderli@immerda.chSort Domain DropdownsFor usability reasons it would be nice to have a sorted list in the domain selection on `/resources_admin?resource_name=mailman`For usability reasons it would be nice to have a sorted list in the domain selection on `/resources_admin?resource_name=mailman`https://code.immerda.ch/immerda/apps/iapi/-/issues/26undefined method `text' for nil:NilClass: in saml_idp validating a broken sig?2022-12-12T21:35:35Zmhundefined method `text' for nil:NilClass: in saml_idp validating a broken sig?There might be an SP with an old cert, however we fail to login due to the following error:
```
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: 2022-03-15 21:31:59 - NoMethodError - undefined method `text' for nil:NilClass:
Mar 15 21:31:5...There might be an SP with an old cert, however we fail to login due to the following error:
```
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: 2022-03-15 21:31:59 - NoMethodError - undefined method `text' for nil:NilClass:
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/saml_idp-0.14.0/lib/saml_idp/xml_security.rb:121:in `validate_doc'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/saml_idp-0.14.0/lib/saml_idp/xml_security.rb:63:in `validate'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/saml_idp-0.14.0/lib/saml_idp.rb:75:in `valid_signature?'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/lib/iapi/managers/saml_manager.rb:60:in `block in verify_request'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/lib/iapi/managers/saml_manager.rb:59:in `each'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/lib/iapi/managers/saml_manager.rb:59:in `verify_request'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/lib/iapi/managers/saml_manager.rb:110:in `sp_info'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/lib/iapi/routes/auth.rb:20:in `block (2 levels) in <class:IApi>'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1675:in `call'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1675:in `block in compile!'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1013:in `block (3 levels) in route!'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1032:in `route_eval'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1013:in `block (2 levels) in route!'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1061:in `block in process_route'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1059:in `catch'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1059:in `process_route'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1011:in `block in route!'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1008:in `each'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1008:in `route!'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1129:in `block in dispatch!'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1101:in `block in invoke'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1101:in `catch'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1101:in `invoke'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1124:in `dispatch!'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:939:in `block in call!'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1101:in `block in invoke'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1101:in `catch'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1101:in `invoke'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:939:in `call!'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:929:in `call'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/rack-protection-2.1.0/lib/rack/protection/xss_header.rb:18:in `call'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/rack-protection-2.1.0/lib/rack/protection/path_traversal.rb:16:in `call'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/rack-protection-2.1.0/lib/rack/protection/json_csrf.rb:26:in `call'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/rack-protection-2.1.0/lib/rack/protection/base.rb:50:in `call'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/rack-protection-2.1.0/lib/rack/protection/base.rb:50:in `call'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/rack-protection-2.1.0/lib/rack/protection/frame_options.rb:31:in `call'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/rack-2.2.3/lib/rack/logger.rb:17:in `call'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/rack-2.2.3/lib/rack/common_logger.rb:38:in `call'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:253:in `call'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:246:in `call'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/rack-2.2.3/lib/rack/head.rb:12:in `call'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:216:in `call'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1991:in `call'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1542:in `block in call'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1769:in `synchronize'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1542:in `call'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/thin-1.8.1/lib/thin/connection.rb:86:in `block in pre_process'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/thin-1.8.1/lib/thin/connection.rb:84:in `catch'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/thin-1.8.1/lib/thin/connection.rb:84:in `pre_process'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/thin-1.8.1/lib/thin/connection.rb:50:in `block in process'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: /usr/local/iapi/bundler/ruby/2.5.0/gems/eventmachine-1.2.7/lib/eventmachine.rb:1077:in `block in spawn_threadpool'
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: ERROR : Error: undefined method `text' for nil:NilClass
Mar 15 21:31:59 immer12-8.glei.ch iapi[3916]: ERROR : Sending error to client: "undefined method `text' for nil:NilClass"
```https://code.immerda.ch/immerda/apps/iapi/-/issues/25Unify mail_alias target and owner2022-04-02T15:42:53ZquaUnify mail_alias target and ownerWhen changing the owner(s) of an alias, currently the target is not modified. To the new owners the aliases are presented as if that would be the case, though (currently not linked but accessible to every user if they guess the URL).
IM...When changing the owner(s) of an alias, currently the target is not modified. To the new owners the aliases are presented as if that would be the case, though (currently not linked but accessible to every user if they guess the URL).
IMO the pragmatic solution would be to also change the target(s) of the alias if the owner(s) are edited.https://code.immerda.ch/immerda/apps/iapi/-/issues/24delete resources with user?2022-02-23T11:16:33Zo@ungehorsam.chdelete resources with user?Resources should be deleted with the user!
Plan:
1. Warn user and list all resources that will be deleted.
2. Provide option for transferring resource.
3. Delete with user.Resources should be deleted with the user!
Plan:
1. Warn user and list all resources that will be deleted.
2. Provide option for transferring resource.
3. Delete with user.https://code.immerda.ch/immerda/apps/iapi/-/issues/23can't create email alias for a schleuder list2021-09-10T13:33:48Zmhcan't create email alias for a schleuder listwanted to create: alias@example.com -> schleuder@example.com this fails with `failed`
Also if you set an owner you get: `failed with EmailUnavailable`wanted to create: alias@example.com -> schleuder@example.com this fails with `failed`
Also if you set an owner you get: `failed with EmailUnavailable`https://code.immerda.ch/immerda/apps/iapi/-/issues/22User account audit log2022-02-23T11:13:54Zo@ungehorsam.chUser account audit logI put this here for comment, let me know what you think, or if you have additional idea.
Now that we have the per-user encrypted transaction log in iapi, I really want an audit log for user accounts. The audit events can be listed by th...I put this here for comment, let me know what you think, or if you have additional idea.
Now that we have the per-user encrypted transaction log in iapi, I really want an audit log for user accounts. The audit events can be listed by the user and some of the more important ones should also generate a notification email.
Ideas for entries:
* pw settings change (pw / app pw / 2fa)
* security settings change: recovery email, recovery token displayed or mailed, pgp key changed
* invite code created
* services (resources) created / deleted
* logins (where and how), this one probably with a short ttl, e.g. stored just for 1-2 weeks
maybe longterm (if we can implement it in a reasonable way):
* login with new / unknown devicehttps://code.immerda.ch/immerda/apps/iapi/-/issues/21Update saml_idp requires adaption2021-07-20T15:28:34ZmhUpdate saml_idp requires adaptionI tried to update gems, which would update saml_idp gem.
Tests start to fail with:
```
NoMethodError:
undefined method `should_validate_signature?' for #<SamlIdp::ServiceProvider:0x0000000003b473e8>
# /git/iapi-hack...I tried to update gems, which would update saml_idp gem.
Tests start to fail with:
```
NoMethodError:
undefined method `should_validate_signature?' for #<SamlIdp::ServiceProvider:0x0000000003b473e8>
# /git/iapi-hack/iapi/lib/iapi/managers/saml_manager.rb:45:in `verify_request'
# /git/iapi-hack/iapi/lib/iapi/managers/saml_manager.rb:68:in `sp_info'
```
This is due to this merge request: https://github.com/saml-idp/saml_idp/pull/119
Which has an interesting discussion about removing that method. But it's too late to fully understand, so I dump it here.https://code.immerda.ch/immerda/apps/iapi/-/issues/20testflake: mail_crypt.rb:94:in `Integer': invalid value for Integer(): ""2022-09-02T14:43:12Zmhtestflake: mail_crypt.rb:94:in `Integer': invalid value for Integer(): ""The following looks like a test-flake -discovered in a CI run for !45:
https://code.immerda.ch/immerda/apps/iapi/-/jobs/15222
```
/var/lib/gitlab-runner/runners/container-immer13-14.glei.ch/builds/immerda/apps/iapi/lib/iapi/utils/mail_...The following looks like a test-flake -discovered in a CI run for !45:
https://code.immerda.ch/immerda/apps/iapi/-/jobs/15222
```
/var/lib/gitlab-runner/runners/container-immer13-14.glei.ch/builds/immerda/apps/iapi/lib/iapi/utils/mail_crypt.rb:94:in `Integer': invalid value for Integer(): "" (ArgumentError)
from /var/lib/gitlab-runner/runners/container-immer13-14.glei.ch/builds/immerda/apps/iapi/lib/iapi/utils/mail_crypt.rb:94:in `initialize'
from /var/lib/gitlab-runner/runners/container-immer13-14.glei.ch/builds/immerda/apps/iapi/lib/iapi/utils/mail_crypt.rb:125:in `new'
from /var/lib/gitlab-runner/runners/container-immer13-14.glei.ch/builds/immerda/apps/iapi/lib/iapi/utils/mail_crypt.rb:125:in `deserialize'
from /var/lib/gitlab-runner/runners/container-immer13-14.glei.ch/builds/immerda/apps/iapi/lib/iapi/utils/mail_crypt.rb:284:in `authenticate'
from /var/lib/gitlab-runner/runners/container-immer13-14.glei.ch/builds/immerda/apps/iapi/bin/mailcrypt-cli.rb:242:in `<main>'
```https://code.immerda.ch/immerda/apps/iapi/-/issues/19Quota Regeneration2021-06-08T15:20:15Zo@ungehorsam.chQuota RegenerationCurrently deleted objects count towards your usage regarding quotas. The idea would be to have some job every once in a while that reduces that, so you can create new things eventually after deleting old ones.Currently deleted objects count towards your usage regarding quotas. The idea would be to have some job every once in a while that reduces that, so you can create new things eventually after deleting old ones.