Dear Maintainer,

I am suggesting to fix this issue by providing @{thunderbird_user_dirs} variable, that could be modified by the user to add addition paths, such `/home/me/Archives` or `/mnt/foo`. This kind of functionality is discussed in AppArmor mailing list [0].

I have tested with `/etc/apparmor.d/local/tunables/usr.bin.thunderbird` having 
this content:

```
@{thunderbird_user_dirs} += /mnt/foo /home/vincas/Archive/
```

And it solves this issue, provided that profile has patch applied of course.

_The question is_, will you agree to ship empty file `/etc/apparmor.d/local/tunables/usr.bin.thunderbird`? We do not have "#include_if_exists" or similar mechanism in AppArmor parser to avoid that yet.

Additionally, maybe Thunderbird's README could have useful information about 
this customization point.

I have attached WIP patch that I will propose to AppArmor pull request myself, 
but only if you agree with this plan.

[0] https://lists.ubuntu.com/archives/apparmor/2017-December/011350.html
diff --git a/ubuntu/18.04/usr.bin.thunderbird b/ubuntu/18.04/usr.bin.thunderbird
index b656108..4d1f3cc 100644
--- a/ubuntu/18.04/usr.bin.thunderbird
+++ b/ubuntu/18.04/usr.bin.thunderbird
@@ -8,6 +8,11 @@
 
 #include <tunables/global>
 
+# Directories where .thunderbird directory might reside in
+@{thunderbird_user_dirs} = @{HOME}
+
+#include <local/tunables/usr.bin.thunderbird>
+
 profile thunderbird /usr/lib/thunderbird/thunderbird {
   #include <abstractions/audio>
   #include <abstractions/aspell>
@@ -160,12 +165,12 @@ profile thunderbird /usr/lib/thunderbird/thunderbird {
   /**/ r,
 
   # per-user thunderbird configuration
-  owner @{HOME}/.{icedove,thunderbird}/ rw,
-  owner @{HOME}/.{icedove,thunderbird}/** rw,
-  owner @{HOME}/.{icedove,thunderbird}/**/storage.sdb k,
-  owner @{HOME}/.{icedove,thunderbird}/**/*.{db,parentlock,sqlite}* k,
-  owner @{HOME}/.{icedove,thunderbird}/plugins/** rm,
-  owner @{HOME}/.{icedove,thunderbird}/**/plugins/** rm,
+  owner @{thunderbird_user_dirs}/.{icedove,thunderbird}/ rw,
+  owner @{thunderbird_user_dirs}/.{icedove,thunderbird}/** rw,
+  owner @{thunderbird_user_dirs}/.{icedove,thunderbird}/**/storage.sdb k,
+  owner @{thunderbird_user_dirs}/.{icedove,thunderbird}/**/*.{db,parentlock,sqlite}* k,
+  owner @{thunderbird_user_dirs}/.{icedove,thunderbird}/plugins/** rm,
+  owner @{thunderbird_user_dirs}/.{icedove,thunderbird}/**/plugins/** rm,
   owner @{HOME}/.cache/thunderbird/ rw,
   owner @{HOME}/.cache/thunderbird/** rw,
 
@@ -176,7 +181,7 @@ profile thunderbird /usr/lib/thunderbird/thunderbird {
   # Extensions
   # /usr/share/.../extensions/... is already covered by '/usr/** r', above.
   # Allow 'x' for downloaded extensions, but inherit policy for safety
-  owner @{HOME}/.{icedove,thunderbird}/**/extensions/** mixrw,
+  owner @{thunderbird_user_dirs}/.{icedove,thunderbird}/**/extensions/** mixrw,
   owner @{HOME}/.mozilla/extensions/**        mixr,
   /usr/share/xul-ext/**/*.sqlite              rk,
   /usr/lib/mozilla/plugins/*.so               rm,
@@ -216,10 +221,10 @@ profile thunderbird /usr/lib/thunderbird/thunderbird {
     /usr/share/xul-ext/enigmail/chrome/enigmail.jar r,
 
     # silence noise from enigmail 1.9+
-    deny owner @{HOME}/.{icedove,thunderbird}/*/.parentlock w,
-    deny owner @{HOME}/.{icedove,thunderbird}/*/panacea.dat w,
-    deny owner @{HOME}/.{icedove,thunderbird}/*/*.mab w,
-    deny owner @{HOME}/.{icedove,thunderbird}/**/*.msf w,
+    deny owner @{thunderbird_user_dirs}/.{icedove,thunderbird}/*/.parentlock w,
+    deny owner @{thunderbird_user_dirs}/.{icedove,thunderbird}/*/panacea.dat w,
+    deny owner @{thunderbird_user_dirs}/.{icedove,thunderbird}/*/*.mab w,
+    deny owner @{thunderbird_user_dirs}/.{icedove,thunderbird}/**/*.msf w,
     deny owner @{HOME}/.cache/thunderbird/**/_CACHE_* w,
 
     # noise from inherited files

Reply via email to