diff --git a/etc/backupninja.conf.in b/etc/backupninja.conf.in
index f2366a32b782c8bf8e00d3dcd4b54209729cd29f..351c207aa46d9d2772a3ed77ff261f8d197fb868 100644
--- a/etc/backupninja.conf.in
+++ b/etc/backupninja.conf.in
@@ -75,6 +75,9 @@ usecolors = yes
 # default value for 'when'
 when = everyday at 01:00
 
+# conf.d for backupninja.conf overrides
+config_d_directory = @CFGDIR@/backupninja.conf.d
+
 # programs paths
 # SLAPCAT=/usr/sbin/slapcat
 # LDAPSEARCH=/usr/bin/ldapsearch
diff --git a/lib/tools.in b/lib/tools.in
index 55c2650103726d88d7df706a26ca1ffc54bc6811..68aed4b0b1c1162cae40b25223888ca6703b40d6 100644
--- a/lib/tools.in
+++ b/lib/tools.in
@@ -58,20 +58,46 @@ function version_ge() {
 
 function setfile() {
    CURRENT_CONF_FILE=$1
+   # initialize empty and ommit a default value
+   CURRENT_CONF_D_DIR=""
+   getconf config_d_directory
+   # for consistency the config key is in lowercase
+   CURRENT_CONF_D_DIR=$config_d_directory
 }
 
 function setsection() {
    CURRENT_SECTION=$1
 }
 
-#
 # sets a global var with name equal to $1
 # to the value of the configuration parameter $1
 # $2 is the default.
-#
+# Begin by parsing the conf.d directory for configs.
+# If the param is not found there fallback on the packaged backupninja.conf.
+# if the param is still not found fallback to the default.
 function getconf() {
+   ret=""
    CURRENT_PARAM=$1
-   ret=`@AWK@ -f $libdirectory/parseini S=$CURRENT_SECTION P=$CURRENT_PARAM $CURRENT_CONF_FILE`
+
+   # check if conf.d directory exists
+   if [ -d "$CURRENT_CONF_D_DIR" ]; then
+      CURRENT_CONF_D_FILES=$CURRENT_CONF_D_DIR/*.conf
+      # iterate over all *.conf files in conf.d dir
+      for CURRENT_CONF_D_FILE in $CURRENT_CONF_D_FILES; do
+         # retrieve param from file
+         ret=`@AWK@ -f $libdirectory/parseini S=$CURRENT_SECTION P=$CURRENT_PARAM $CURRENT_CONF_D_FILE`
+         # exit the iteration if the param is set
+         if [ -n "$ret" ]; then
+            break
+         fi
+      done
+   fi
+
+   # after exiting the loop caused by a not set param parse the packaged backupninja.conf
+   if [ "$ret" == "" ]; then
+      ret=$(@AWK@ -f $libdirectory/parseini S=$CURRENT_SECTION P=$CURRENT_PARAM $CURRENT_CONF_FILE)
+   fi
+
    # if nothing is returned, set the default
    if [ "$ret" == "" -a "$2" != "" ]; then
       ret="$2"
diff --git a/man/backupninja.conf.5 b/man/backupninja.conf.5
index ff6b055330097a4a24ff0fd0c4606318f3965324..ab19700469e3c03a6b585d424eb132a81ffd62c1 100644
--- a/man/backupninja.conf.5
+++ b/man/backupninja.conf.5
@@ -124,6 +124,11 @@ These values for 'when' are invalid:
   when = tuesday at 2
   when = tues at 02
 
+.TP
+.B config_d_directory
+Directory for configuration overrides. Files dropped in this directory have
+to end with .conf. Misspelled parameter break the parsing of this directory.
+
 .TP
 .SH DEFAULTS