Hello,

dovecot-lda needs to read and write /tmp/dovecot.lda.*.

It also needs to be able to execute sendmail to send sieve vacation
mails.

For now, I'm using a child profile for sendmail to avoid introducing a
new profile with possible regressions. This child profile is based on
the usr.sbin.sendmail profile in extras and should cover both postfix'
and sendmail's sendmail.
I also mixed in some bits that were needed for (postfix) sendmail on my
servers, and dropped some rules that were obsolete (directory rules not
ending with a /) or covered by an abstraction.

In the future, we might want to provide a stand-alone profile for
sendmail (based on this child profile) and change the rule in the
dovecot-lda profile to Px.


References: https://bugzilla.opensuse.org/show_bug.cgi?id=954959
            https://bugzilla.opensuse.org/show_bug.cgi?id=954958


I propose this patch for trunk, 2.10 and 2.9.


[ profiles-dovecot-lda.diff ]

--- profiles/apparmor.d/usr.lib.dovecot.dovecot-lda     2014-09-10 
22:00:36.616976000 +0200
+++ profiles/apparmor.d/usr.lib.dovecot.dovecot-lda     2016-01-06 
14:16:52.943206901 +0100
@@ -1,6 +1,6 @@
 # ------------------------------------------------------------------           
                                                                                
                                                                                
                               
 #                                                                              
                                                                                
                                                                                
                               
-#    Copyright (C) 2013 Christian Boltz                                        
                                                                                
                                                                                
                               
+#    Copyright (C) 2013-2016 Christian Boltz                                   
                                                                                
                                                                                
                               
 #                                                                              
                                                                                
                                                                                
                               
 #    This program is free software; you can redistribute it and/or             
                                                                                
                                                                                
                               
 #    modify it under the terms of version 2 of the GNU General Public          
                                                                                
                                                                                
                               
@@ -24,10 +24,65 @@                                                             
                                                                                
                                                                                
                               
                                                                                
                                                                                
                                                                                
                               
   /etc/dovecot/** r,                                                           
                                                                                
                                                                                
                               
   /proc/*/mounts r,                                                            
                                                                                
                                                                                
                               
+  owner /tmp/dovecot.lda.* rw,                                                 
                                                                                
                                                                                
                               
   /{var/,}run/dovecot/mounts r,                                                
                                                                                
                                                                                
                               
   /usr/bin/doveconf mrix,                                                      
                                                                                
                                                                                
                               
   /usr/lib/dovecot/dovecot-lda mrix,                                           
                                                                                
                                                                                
                               
+  /usr/sbin/sendmail Cx,                                                       
                                                                                
                                                                                
                               
                                                                                
                                                                                
                                                                                
                               
   # Site-specific additions and overrides. See local/README for details.       
                                                                                
                                                                                
                               
   #include <local/usr.lib.dovecot.dovecot-lda>                                 
                                                                                
                                                                                
                               
+                                                                               
                                                                                
                                                                                
                               
+                                                                               
                                                                                
                                                                                
                               
+  profile /usr/sbin/sendmail flags=(attach_disconnected) {                     
                                                                                
                                                                                
                               
+    # this profile is based on the usr.sbin.sendmail profile in extras         
                                                                                
                                                                                
                               
+    # and should support both postfix' and sendmail's sendmail binary          
                                                                                
                                                                                
                               
+                                                                               
                                                                                
                                                                                
                               
+    #include <abstractions/base>                                               
                                                                                
                                                                                
                               
+    #include <abstractions/consoles>                                           
                                                                                
                                                                                
                               
+    #include <abstractions/nameservice>                                        
                                                                                
                                                                                
                               
+    #include <abstractions/user-tmp>                                           
                                                                                
                                                                                
                               
+    #include <abstractions/postfix-common>                                     
                                                                                
                                                                                
                               
+                                                                               
                                                                                
                                                                                
                               
+    capability sys_ptrace,                                                     
                                                                                
                                                                                
                               
+                                                                               
                                                                                
                                                                                
                               
+    /etc/aliases rw,     # newaliases is a symlink to sendmail, so it's        
                                                                                
                                                                                
                               
+    /etc/aliases.db rw,  # actually the same binary                            
                                                                                
                                                                                
                               
+    /etc/fstab r,                                                              
                                                                                
                                                                                
                               
+    /etc/hosts.allow r,                                                        
                                                                                
                                                                                
                               
+    /etc/hosts.deny r,
+    /etc/mail/* r,
+    /etc/mail/statistics rw,
+    /etc/mtab r,
+    /etc/postfix/aliases r,
+    /etc/postfix/aliases.db rw,  # newaliases again
+    /etc/sendmail.cf r,
+    /etc/sendmail.cw r,
+    /etc/shells r,
+    /proc/loadavg r,
+    /proc/net/if_inet6 r,
+    /root/.forward r,
+    /root/dead.letter w,
+    /usr/bin/procmail Px,
+    /usr/lib/postfix/master Px,
+    /usr/lib/postfix/showq Px,
+    /usr/lib/postfix/smtpd Px,
+    /usr/sbin/postalias Px,
+    /usr/sbin/postdrop Px,
+    /usr/sbin/postfix Px,
+    /usr/sbin/postqueue Px,
+    /usr/sbin/sendmail mrix,
+    /usr/sbin/sendmail.postfix mrix,
+    /usr/sbin/sendmail.sendmail mrix,
+    /{var/,}run/sendmail.pid rwl,
+    /{var/,}run/sm-client.pid rwl,
+    /{var/,}run/utmp rw,
+    /var/spool/clientmqueue/* rwl,
+    /var/spool/mail/* rwl,
+    /var/spool/mqueue/* rwl,
+    /var/spool/postfix/maildrop/* rwl,
+    /var/spool/postfix/public/pickup w,
+    /var/spool/postfix/public/qmgr w,
+    /var/spool/postfix/public/showq w,
+  }
 }


Regards,

Christian Boltz
-- 
<coolo> ancor: oh, sorry. you can't know yet: coolo is always right
[from #opensuse-project]

Attachment: signature.asc
Description: This is a digitally signed message part.

-- 
AppArmor mailing list
AppArmor@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/apparmor

Reply via email to