Can you try

doveadm -fjson mailbox list -u user INBOX/*

Aki

On 15.08.2018 09:29, Ralf Becker wrote:
> Am 14.08.18 um 18:51 schrieb Aki Tuomi:
>> Try 
>>
>> doveadm mailbox list -u user INBOX/*
> Hmm, posted that before, it lists all these undeletable mailboxes:
>
> root@ka-nfs-mail:~# doveadm mailbox list  -u <username> 'INBOX/*' | grep
> hbereich
> INBOX/[Fachbereiche
> INBOX/Fachbereiche
> INBOX/hbereiche
> INBOX/hbereiche/LAGen]
> INBOX/hbereiche/LAG
> INBOX/[Fachbereiche
> INBOX/[Fachbereiche/LAGen]
> INBOX/[Fachbereiche]
> INBOX/[Fachbereiche]/LAGen]
> INBOX/[Fachbereiche]/LAGe
>
> When I try deleting it, everything looks ok:
>
> root@ka-nfs-mail:~# doveadm mailbox delete -u <username>
> 'INBOX/Fachbereiche '
> doveadm(<username>): Info: Mailbox deleted: INBOX/Fachbereiche
>
> But listing the mailboxes shows it's still there:
>
> root@ka-nfs-mail:~# doveadm mailbox list  -u <username> 'INBOX/*' 2>&1 |
> grep hbereich
> INBOX/[Fachbereiche
> INBOX/Fachbereiche
> INBOX/hbereiche
> INBOX/hbereiche/LAGen]
> INBOX/hbereiche/LAG
> INBOX/[Fachbereiche
> INBOX/[Fachbereiche/LAGen]
> INBOX/[Fachbereiche]
> INBOX/[Fachbereiche]/LAGen]
> INBOX/[Fachbereiche]/LAGe
>
> Ralf
>
>> Aki
>>
>>> On 14 August 2018 at 19:20 Ralf Becker <[email protected]> wrote:
>>>
>>>
>>> Hi Aki,
>>>
>>> Am 14.08.18 um 16:42 schrieb Aki Tuomi:
>>>> Hi,
>>>>
>>>> the thing I'm actually looking for is that whether the sync causes the 
>>>> folder to be restored, so it might be a better idea for you to try and 
>>>> spot this from the logs. I assume that as an SP that you are using 
>>>> mail_log plugin, so that might be useful to spot if this happens. You can 
>>>> also try looking at the UIDVALIDITY value of the folder, it usually 
>>>> corresponds to the creation unixtime.
>>> Hmm, I dont get a mailbox status for the folder 'INBOX/Fachbereiche '
>>> (trailing space):
>>>
>>> root@ka-nfs-mail:~# doveadm -Dv mailbox status  -u <username> all
>>> 'INBOX/Fachbereiche '
>>> Debug: Loading modules from directory: /usr/lib/dovecot
>>> Debug: Module loaded: /usr/lib/dovecot/lib01_acl_plugin.so
>>> Debug: Module loaded: /usr/lib/dovecot/lib10_quota_plugin.so
>>> Debug: Module loaded: /usr/lib/dovecot/lib15_notify_plugin.so
>>> Debug: Module loaded: /usr/lib/dovecot/lib20_mail_log_plugin.so
>>> Debug: Module loaded: /usr/lib/dovecot/lib20_replication_plugin.so
>>> Debug: Loading modules from directory: /usr/lib/dovecot/doveadm
>>> Debug: Module loaded: /usr/lib/dovecot/doveadm/lib10_doveadm_acl_plugin.so
>>> Debug: Skipping module doveadm_expire_plugin, because dlopen() failed:
>>> Error relocating
>>> /usr/lib/dovecot/doveadm/lib10_doveadm_expire_plugin.so:
>>> expire_set_lookup: symbol not found (this is usually intentional, so
>>> just ignore this message)
>>> Debug: Module loaded: /usr/lib/dovecot/doveadm/lib10_doveadm_quota_plugin.so
>>> Debug: Module loaded: /usr/lib/dovecot/doveadm/lib10_doveadm_sieve_plugin.so
>>> Debug: Skipping module doveadm_fts_plugin, because dlopen() failed:
>>> Error relocating /usr/lib/dovecot/doveadm/lib20_doveadm_fts_plugin.so:
>>> fts_backend_rescan: symbol not found (this is usually intentional, so
>>> just ignore this message)
>>> Debug: Skipping module doveadm_mail_crypt_plugin, because dlopen()
>>> failed: Error relocating
>>> /usr/lib/dovecot/doveadm/libdoveadm_mail_crypt_plugin.so:
>>> mail_crypt_box_get_public_key: symbol not found (this is usually
>>> intentional, so just ignore this message)
>>> doveadm(<username> 43723): Debug: Added userdb setting:
>>> plugin/master_user=<username>
>>> doveadm(<username> 43723): Debug: Added userdb setting:
>>> plugin/userdb_acl_groups=koakram@<domain>,wahlkampfnetzwerk@<domain>,wahlkalender
>>> 2017@<domain>,lgs@<domain>
>>> doveadm(<username> 43723): Debug: Added userdb setting:
>>> plugin/userdb_quota_rule=*:bytes=15728640000
>>> doveadm(<username>): Debug: Effective uid=90, gid=101,
>>> home=/var/dovecot/imap/<domain>/<user>
>>> doveadm(<username>): Debug: Quota root: name=User quota backend=dict
>>> args=:ns=INBOX/:file:/var/dovecot/imap/<domain>/<user>/dovecot-quota
>>> doveadm(<username>): Debug: Quota rule: root=User quota mailbox=*
>>> bytes=107374182400 messages=0
>>> doveadm(<username>): Debug: Quota grace: root=User quota
>>> bytes=10737418240 (10%)
>>> doveadm(<username>): Debug: dict quota: user=<username>,
>>> uri=file:/var/dovecot/imap/<domain>/<user>/dovecot-quota, noenforcing=0
>>> doveadm(<username>): Debug: Namespace inboxes: type=private,
>>> prefix=INBOX/, sep=/, inbox=yes, hidden=no, list=yes, subscriptions=no
>>> location=mdbox:~/mdbox
>>> doveadm(<username>): Debug: fs:
>>> root=/var/dovecot/imap/<domain>/<user>/mdbox, index=, indexpvt=,
>>> control=, inbox=, alt=
>>> doveadm(<username>): Debug: acl: initializing backend with data: vfile
>>> doveadm(<username>): Debug: acl: acl username = <username>
>>> doveadm(<username>): Debug: acl: owner = 1
>>> doveadm(<username>): Debug: acl vfile: Global ACLs disabled
>>> doveadm(<username>): Debug: Namespace users: type=shared,
>>> prefix=user/%n/, sep=/, inbox=no, hidden=no, list=yes, subscriptions=no
>>> location=mdbox:%h/mdbox:INDEXPVT=~/shared/%u
>>> doveadm(<username>): Debug: shared: root=/run/dovecot, index=,
>>> indexpvt=, control=, inbox=, alt=
>>> doveadm(<username>): Debug: acl: initializing backend with data: vfile
>>> doveadm(<username>): Debug: acl: acl username = <username>
>>> doveadm(<username>): Debug: acl: owner = 0
>>> doveadm(<username>): Debug: acl vfile: Global ACLs disabled
>>> doveadm(<username>): Debug: Namespace subs: type=private, prefix=,
>>> sep=/, inbox=no, hidden=yes, list=no, subscriptions=yes
>>> location=mdbox:~/mdbox
>>> doveadm(<username>): Debug: fs:
>>> root=/var/dovecot/imap/<domain>/<user>/mdbox, index=, indexpvt=,
>>> control=, inbox=, alt=
>>> doveadm(<username>): Debug: acl: initializing backend with data: vfile
>>> doveadm(<username>): Debug: acl: acl username = <username>
>>> doveadm(<username>): Debug: acl: owner = 1
>>> doveadm(<username>): Debug: acl vfile: Global ACLs disabled
>>> doveadm(<username>): Debug: quota: quota_over_flag check:
>>> quota_over_script unset - skipping
>>> doveadm(<username>): Debug: INBOX/Fachbereiche : Mailbox opened because:
>>> mailbox status
>>> doveadm(<username>): Error: Mailbox INBOX/Fachbereiche : Failed to
>>> lookup mailbox status: Mailbox doesn't exist: INBOX/Fachbereiche
>>>
>>> While mailbox list still lists it:
>>>
>>> root@ka-nfs-mail:~# doveadm -Dv mailbox list  -u <username> 
>>> 'INBOX/Fachbereiche '
>>> Debug: Loading modules from directory: /usr/lib/dovecot
>>> Debug: Module loaded: /usr/lib/dovecot/lib01_acl_plugin.so
>>> Debug: Module loaded: /usr/lib/dovecot/lib10_quota_plugin.so
>>> Debug: Module loaded: /usr/lib/dovecot/lib15_notify_plugin.so
>>> Debug: Module loaded: /usr/lib/dovecot/lib20_mail_log_plugin.so
>>> Debug: Module loaded: /usr/lib/dovecot/lib20_replication_plugin.so
>>> Debug: Loading modules from directory: /usr/lib/dovecot/doveadm
>>> Debug: Module loaded: /usr/lib/dovecot/doveadm/lib10_doveadm_acl_plugin.so
>>> Debug: Skipping module doveadm_expire_plugin, because dlopen() failed:
>>> Error relocating
>>> /usr/lib/dovecot/doveadm/lib10_doveadm_expire_plugin.so:
>>> expire_set_lookup: symbol not found (this is usually intentional, so
>>> just ignore this message)
>>> Debug: Module loaded: /usr/lib/dovecot/doveadm/lib10_doveadm_quota_plugin.so
>>> Debug: Module loaded: /usr/lib/dovecot/doveadm/lib10_doveadm_sieve_plugin.so
>>> Debug: Skipping module doveadm_fts_plugin, because dlopen() failed:
>>> Error relocating /usr/lib/dovecot/doveadm/lib20_doveadm_fts_plugin.so:
>>> fts_backend_rescan: symbol not found (this is usually intentional, so
>>> just ignore this message)
>>> Debug: Skipping module doveadm_mail_crypt_plugin, because dlopen()
>>> failed: Error relocating
>>> /usr/lib/dovecot/doveadm/libdoveadm_mail_crypt_plugin.so:
>>> mail_crypt_box_get_public_key: symbol not found (this is usually
>>> intentional, so just ignore this message)
>>> doveadm(<username> 46127): Debug: Added userdb setting:
>>> plugin/master_user=<username>
>>> doveadm(<username> 46127): Debug: Added userdb setting:
>>> plugin/userdb_acl_groups=koakram@<domain>,wahlkampfnetzwerk@<domain>,wahlkalender
>>> 2017@<domain>,lgs@<domain>
>>> doveadm(<username> 46127): Debug: Added userdb setting:
>>> plugin/userdb_quota_rule=*:bytes=15728640000
>>> doveadm(<username>): Debug: Effective uid=90, gid=101,
>>> home=/var/dovecot/imap/<domain>/<user>
>>> doveadm(<username>): Debug: Quota root: name=User quota backend=dict
>>> args=:ns=INBOX/:file:/var/dovecot/imap/<domain>/<user>/dovecot-quota
>>> doveadm(<username>): Debug: Quota rule: root=User quota mailbox=*
>>> bytes=107374182400 messages=0
>>> doveadm(<username>): Debug: Quota grace: root=User quota
>>> bytes=10737418240 (10%)
>>> doveadm(<username>): Debug: dict quota: user=<username>,
>>> uri=file:/var/dovecot/imap/<domain>/<user>/dovecot-quota, noenforcing=0
>>> doveadm(<username>): Debug: Namespace inboxes: type=private,
>>> prefix=INBOX/, sep=/, inbox=yes, hidden=no, list=yes, subscriptions=no
>>> location=mdbox:~/mdbox
>>> doveadm(<username>): Debug: fs:
>>> root=/var/dovecot/imap/<domain>/<user>/mdbox, index=, indexpvt=,
>>> control=, inbox=, alt=
>>> doveadm(<username>): Debug: acl: initializing backend with data: vfile
>>> doveadm(<username>): Debug: acl: acl username = <username>
>>> doveadm(<username>): Debug: acl: owner = 1
>>> doveadm(<username>): Debug: acl vfile: Global ACLs disabled
>>> doveadm(<username>): Debug: Namespace users: type=shared,
>>> prefix=user/%n/, sep=/, inbox=no, hidden=no, list=yes, subscriptions=no
>>> location=mdbox:%h/mdbox:INDEXPVT=~/shared/%u
>>> doveadm(<username>): Debug: shared: root=/run/dovecot, index=,
>>> indexpvt=, control=, inbox=, alt=
>>> doveadm(<username>): Debug: acl: initializing backend with data: vfile
>>> doveadm(<username>): Debug: acl: acl username = <username>
>>> doveadm(<username>): Debug: acl: owner = 0
>>> doveadm(<username>): Debug: acl vfile: Global ACLs disabled
>>> doveadm(<username>): Debug: Namespace subs: type=private, prefix=,
>>> sep=/, inbox=no, hidden=yes, list=no, subscriptions=yes
>>> location=mdbox:~/mdbox
>>> doveadm(<username>): Debug: fs:
>>> root=/var/dovecot/imap/<domain>/<user>/mdbox, index=, indexpvt=,
>>> control=, inbox=, alt=
>>> doveadm(<username>): Debug: acl: initializing backend with data: vfile
>>> doveadm(<username>): Debug: acl: acl username = <username>
>>> doveadm(<username>): Debug: acl: owner = 1
>>> doveadm(<username>): Debug: acl vfile: Global ACLs disabled
>>> doveadm(<username>): Debug: quota: quota_over_flag check:
>>> quota_over_script unset - skipping
>>> INBOX/Fachbereiche
>>>
>>> Is there some kind of index for existing mailboxes which needs rebuilding?
>>>
>>> Ralf
>>>
>>>> Aki
>>>>
>>>>> On 14 August 2018 at 17:18 Ralf Becker <[email protected]> wrote:
>>>>>
>>>>>
>>>>> Hi Aki,
>>>>>
>>>>> thanks for looking into this :)
>>>>>
>>>>> Am 14.08.18 um 15:15 schrieb Aki Tuomi:
>>>>>> can you turn on mail_debug=yes and run doveadm -Dv mailbox delete and
>>>>>> provide output and logs from both servers?
>>>>> root@ka-nfs-mail:~# doveadm -Dv mailbox delete  -u h 'INBOX/Fachbereiche '
>>>>> Debug: Loading modules from directory: /usr/lib/dovecot
>>>>> Debug: Module loaded: /usr/lib/dovecot/lib01_acl_plugin.so
>>>>> Debug: Module loaded: /usr/lib/dovecot/lib10_quota_plugin.so
>>>>> Debug: Module loaded: /usr/lib/dovecot/lib15_notify_plugin.so
>>>>> Debug: Module loaded: /usr/lib/dovecot/lib20_mail_log_plugin.so
>>>>> Debug: Module loaded: /usr/lib/dovecot/lib20_replication_plugin.so
>>>>> Debug: Loading modules from directory: /usr/lib/dovecot/doveadm
>>>>> Debug: Module loaded: /usr/lib/dovecot/doveadm/lib10_doveadm_acl_plugin.so
>>>>> Debug: Skipping module doveadm_expire_plugin, because dlopen() failed:
>>>>> Error relocating
>>>>> /usr/lib/dovecot/doveadm/lib10_doveadm_expire_plugin.so:
>>>>> expire_set_lookup: symbol not found (this is usually intentional, so
>>>>> just ignore this message)
>>>>> Debug: Module loaded: 
>>>>> /usr/lib/dovecot/doveadm/lib10_doveadm_quota_plugin.so
>>>>> Debug: Module loaded: 
>>>>> /usr/lib/dovecot/doveadm/lib10_doveadm_sieve_plugin.so
>>>>> Debug: Skipping module doveadm_fts_plugin, because dlopen() failed:
>>>>> Error relocating /usr/lib/dovecot/doveadm/lib20_doveadm_fts_plugin.so:
>>>>> fts_backend_rescan: symbol not found (this is usually intentional, so
>>>>> just ignore this message)
>>>>> Debug: Skipping module doveadm_mail_crypt_plugin, because dlopen()
>>>>> failed: Error relocating
>>>>> /usr/lib/dovecot/doveadm/libdoveadm_mail_crypt_plugin.so:
>>>>> mail_crypt_box_get_public_key: symbol not found (this is usually
>>>>> intentional, so just ignore this message)
>>>>> doveadm(<username>): Debug: auth PASS input:
>>>>> doveadm(<username> 32679): Debug: auth USER input: <username>
>>>>> userdb_quota_rule=*:bytes=15728640000 master_user=<username>
>>>>> userdb_acl_groups=koakram@<domain>,wahlkampfnetzwerk@<domain>,wahlkalender
>>>>> 2017@<domain>,lgs@<domain> home=/var/dovecot/imap/<domain>/<user>
>>>>> doveadm(<username> 32679): Debug: Added userdb setting:
>>>>> plugin/master_user=<username>
>>>>> doveadm(<username> 32679): Debug: Added userdb setting:
>>>>> plugin/userdb_acl_groups=koakram@<domain>,wahlkampfnetzwerk@<domain>,wahlkalender
>>>>> 2017@<domain>,lgs@<domain>
>>>>> doveadm(<username> 32679): Debug: Added userdb setting:
>>>>> plugin/userdb_quota_rule=*:bytes=15728640000
>>>>> doveadm(<username>): Debug: Effective uid=90, gid=101,
>>>>> home=/var/dovecot/imap/<domain>/<user>
>>>>> doveadm(<username>): Debug: Quota root: name=User quota backend=dict
>>>>> args=:ns=INBOX/:file:/var/dovecot/imap/<domain>/<user>/dovecot-quota
>>>>> doveadm(<username>): Debug: Quota rule: root=User quota mailbox=*
>>>>> bytes=107374182400 messages=0
>>>>> doveadm(<username>): Debug: Quota grace: root=User quota
>>>>> bytes=10737418240 (10%)
>>>>> doveadm(<username>): Debug: dict quota: user=<username>,
>>>>> uri=file:/var/dovecot/imap/<domain>/<user>/dovecot-quota, noenforcing=0
>>>>> doveadm(<username>): Debug: Namespace inboxes: type=private,
>>>>> prefix=INBOX/, sep=/, inbox=yes, hidden=no, list=yes, subscriptions=no
>>>>> location=mdbox:~/mdbox
>>>>> doveadm(<username>): Debug: fs:
>>>>> root=/var/dovecot/imap/<domain>/<user>/mdbox, index=, indexpvt=,
>>>>> control=, inbox=, alt=
>>>>> doveadm(<username>): Debug: acl: initializing backend with data: vfile
>>>>> doveadm(<username>): Debug: acl: acl username = <username>
>>>>> doveadm(<username>): Debug: acl: owner = 1
>>>>> doveadm(<username>): Debug: acl vfile: Global ACLs disabled
>>>>> doveadm(<username>): Debug: Namespace users: type=shared,
>>>>> prefix=user/%n/, sep=/, inbox=no, hidden=no, list=yes, subscriptions=no
>>>>> location=mdbox:%h/mdbox:INDEXPVT=~/shared/%u
>>>>> doveadm(<username>): Debug: shared: root=/run/dovecot, index=,
>>>>> indexpvt=, control=, inbox=, alt=
>>>>> doveadm(<username>): Debug: acl: initializing backend with data: vfile
>>>>> doveadm(<username>): Debug: acl: acl username = <username>
>>>>> doveadm(<username>): Debug: acl: owner = 0
>>>>> doveadm(<username>): Debug: acl vfile: Global ACLs disabled
>>>>> doveadm(<username>): Debug: Namespace subs: type=private, prefix=,
>>>>> sep=/, inbox=no, hidden=yes, list=no, subscriptions=yes
>>>>> location=mdbox:~/mdbox
>>>>> doveadm(<username>): Debug: fs:
>>>>> root=/var/dovecot/imap/<domain>/<user>/mdbox, index=, indexpvt=,
>>>>> control=, inbox=, alt=
>>>>> doveadm(<username>): Debug: acl: initializing backend with data: vfile
>>>>> doveadm(<username>): Debug: acl: acl username = <username>
>>>>> doveadm(<username>): Debug: acl: owner = 1
>>>>> doveadm(<username>): Debug: acl vfile: Global ACLs disabled
>>>>> doveadm(<username>): Debug: quota: quota_over_flag check:
>>>>> quota_over_script unset - skipping
>>>>> doveadm(<username>): Debug: INBOX/Fachbereiche : Mailbox opened because:
>>>>> mailbox delete
>>>>> doveadm(<username>): Debug: acl vfile: file
>>>>> /var/dovecot/imap/<domain>/<user>/mdbox/mailboxes/Fachbereiche
>>>>> /dbox-Mails/dovecot-acl not found
>>>>> doveadm(<username>): Debug: Namespace INBOX/: Using permissions from
>>>>> /var/dovecot/imap/<domain>/<user>/mdbox: mode=0700 gid=default
>>>>> doveadm(<username>): Debug: replication: Replication requested by
>>>>> 'mailbox delete', priority=1
>>>>> doveadm(<username>): Info: Mailbox deleted: INBOX/Fachbereiche
>>>>>
>>>>> Output and logs are from the (less loaded) standby/backup node. I can
>>>>> get the logs from the active node tonight.
>>>>>
>>>>> I had to remove some folder-names for privacy reasons, but they all have
>>>>> the same output in the logs.
>>>>>
>>>>> Ralf
>>>>>
>>>>>> ---
>>>>>> Aki Tuomi
>>>>>> Dovecot oy
>>>>>>
>>>>>> -------- Original message --------
>>>>>> From: Ralf Becker <[email protected]>
>>>>>> Date: 14/08/2018 16:13 (GMT+02:00)
>>>>>> To: [email protected]
>>>>>> Subject: doveadm mailbox delete not working
>>>>>>
>>>>>> I have a user who has several folders in his mailbox, which we can not
>>>>>> delete, neither via IMAP nor via doveadm:
>>>>>>
>>>>>> root@ka-nfs-mail:~# doveadm mailbox list -u <username> | grep hbereiche
>>>>>> | cat -v
>>>>>> INBOX/[Fachbereiche ^M
>>>>>> INBOX/Fachbereiche ^M
>>>>>> INBOX/hbereiche^M
>>>>>> INBOX/hbereiche/LAGen]^M
>>>>>> INBOX/hbereiche/LAG^M
>>>>>> INBOX/[Fachbereiche^M
>>>>>> INBOX/[Fachbereiche/LAGen]^M
>>>>>> INBOX/[Fachbereiche]^M
>>>>>> INBOX/[Fachbereiche]/LAGen]^M
>>>>>> INBOX/[Fachbereiche]/LAGe^M
>>>>>> root@ka-nfs-mail:~# doveadm mailbox delete  -u <username>
>>>>>> 'INBOX/Fachbereiche '
>>>>>> doveadm(<username>): Info: Mailbox deleted: INBOX/Fachbereiche
>>>>>> root@ka-nfs-mail:~# doveadm mailbox list -u <username>| grep hbereiche |
>>>>>> cat -v
>>>>>> INBOX/[Fachbereiche ^M
>>>>>> INBOX/Fachbereiche ^M
>>>>>> INBOX/hbereiche^M
>>>>>> INBOX/hbereiche/LAGen]^M
>>>>>> INBOX/hbereiche/LAG^M
>>>>>> INBOX/[Fachbereiche^M
>>>>>> INBOX/[Fachbereiche/LAGen]^M
>>>>>> INBOX/[Fachbereiche]^M
>>>>>> INBOX/[Fachbereiche]/LAGen]^M
>>>>>> INBOX/[Fachbereiche]/LAGe^M
>>>>>>
>>>>>> As far as I tried none of these folders can be deleted (I added single
>>>>>> quotes for trailing space and tried to delete subfolders first).
>>>>>>
>>>>>> Mailbox is in mdbox format on a replication pair under Dovecot 2.2.36
>>>>>> and I tried both nodes of the replication with same result.
>>>>>>
>>>>>> Any ideas?
>>>>>>
>>>>>> Ralf
>>>>>>
>>>>>> -- 
>>>>>> Ralf Becker
>>>>>> EGroupware GmbH [www.egroupware.org]
>>>>>> Handelsregister HRB Kaiserslautern 3587
>>>>>> Geschäftsführer Birgit und Ralf Becker
>>>>>> Leibnizstr. 17, 67663 Kaiserslautern, Germany
>>>>>> Telefon +49 631 31657-0
>>>>>>
>>>>>>
>>>>> -- 
>>>>> Ralf Becker
>>>>> EGroupware GmbH [www.egroupware.org]
>>>>> Handelsregister HRB Kaiserslautern 3587
>>>>> Geschäftsführer Birgit und Ralf Becker
>>>>> Leibnizstr. 17, 67663 Kaiserslautern, Germany
>>>>> Telefon +49 631 31657-0
>>>>>
>>> -- 
>>> Ralf Becker
>>> EGroupware GmbH [www.egroupware.org]
>>> Handelsregister HRB Kaiserslautern 3587
>>> Geschäftsführer Birgit und Ralf Becker
>>> Leibnizstr. 17, 67663 Kaiserslautern, Germany
>>> Telefon +49 631 31657-0
>>>
>>>


Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to