diff --git a/configure.in b/configure.in
index 78d9a22e2dcb45c7153d67abec1cc624b41424b7..6fcb8aace1fad19c620f1a4b2ad08d430eef411e 100644
--- a/configure.in
+++ b/configure.in
@@ -73,6 +73,16 @@ fi
 #
 #
 
+AC_ARG_ENABLE(header-install,
+[  --enable-header-install Install development headers],
+    if test x$enableval = xno; then
+        want_headers=no
+    else
+        want_headers=yes
+    fi,
+    want_headers=no)
+AM_CONDITIONAL(INSTALL_HEADERS, test "$want_headers" = "yes")
+
 AC_ARG_ENABLE(valgrind,
 [AC_HELP_STRING([--enable-valgrind], [Enable Valgrind memory leak checks in testsuite [default=no]])],
     if test x$enableval = xno || test x$enableval = xauto; then
diff --git a/src/lib-sieve/Makefile.am b/src/lib-sieve/Makefile.am
index fcf02ea48058feea8eddec351914083c5552da7e..cb5f71bcacfcdd689104be71e5d9b1b000762ffd 100644
--- a/src/lib-sieve/Makefile.am
+++ b/src/lib-sieve/Makefile.am
@@ -1,6 +1,6 @@
 SUBDIRS = plugins
 
-noinst_LTLIBRARIES = libsieve.la
+pkglib_LTLIBRARIES = libdovecot-sieve.la
 
 AM_CPPFLAGS = \
 	-I$(dovecot_incdir) \
@@ -66,10 +66,10 @@ plugins = \
 	./plugins/date/libsieve_ext_date.la \
 	$(unfinished_plugins)
 
-libsieve_la_DEPENDENCIES = $(plugins)
-libsieve_la_LIBADD = $(plugins)
+libdovecot_sieve_la_DEPENDENCIES = $(plugins)
+libdovecot_sieve_la_LIBADD = $(plugins)
 
-libsieve_la_SOURCES = \
+libdovecot_sieve_la_SOURCES = \
 	rfc2822.c \
 	sieve-limits.c \
 	sieve-message.c \
@@ -103,7 +103,7 @@ libsieve_la_SOURCES = \
 	$(extensions) \
 	sieve.c 
 
-noinst_HEADERS = \
+headers = \
 	rfc2822.h \
 	sieve-config.h \
 	sieve-types.h \
@@ -137,3 +137,10 @@ noinst_HEADERS = \
 	sieve-actions.h \
 	sieve-extensions.h \
 	sieve.h
+
+if INSTALL_HEADERS
+	pkginc_libdir=$(pkgincludedir)/sieve
+	pkginc_lib_HEADERS = $(headers)
+else
+	noinst_HEADERS = $(headers)
+endif
diff --git a/src/lib-sieve/plugins/enotify/Makefile.am b/src/lib-sieve/plugins/enotify/Makefile.am
index 4d91fd8c46046a867c71ec7d1b2e1db0db3ec425..b9f600808e20ac69879290f1fea94f1a792e8045 100644
--- a/src/lib-sieve/plugins/enotify/Makefile.am
+++ b/src/lib-sieve/plugins/enotify/Makefile.am
@@ -29,8 +29,17 @@ libsieve_ext_enotify_la_SOURCES = \
 	$(var_modifiers) \
 	$(notify_methods)
 
-noinst_HEADERS = \
-	sieve-ext-enotify.h \
+public_headers = \
+	sieve-ext-enotify.h
+
+headers = \
 	ext-enotify-limits.h \
 	ext-enotify-common.h
 
+if INSTALL_HEADERS
+  pkginc_libdir=$(pkgincludedir)/sieve
+  pkginc_lib_HEADERS = $(public_headers)
+  noinst_HEADERS = $(headers)
+else
+  noinst_HEADERS = $(headers) $(public_headers)
+endif
diff --git a/src/lib-sieve/plugins/environment/Makefile.am b/src/lib-sieve/plugins/environment/Makefile.am
index 0acdbdf6b9928709c7e53d4e26ad76bfc5042f8e..8de6768008952f8082d182784646cc467884b0c2 100644
--- a/src/lib-sieve/plugins/environment/Makefile.am
+++ b/src/lib-sieve/plugins/environment/Makefile.am
@@ -15,6 +15,17 @@ libsieve_ext_environment_la_SOURCES = \
 	ext-environment-common.c \
 	ext-environment.c
 
-noinst_HEADERS = \
-	ext-environment-common.h \
+public_headers = \
 	sieve-ext-environment.h
+
+headers = \
+	ext-environment-common.h
+
+if INSTALL_HEADERS
+  pkginc_libdir=$(pkgincludedir)/sieve
+  pkginc_lib_HEADERS = $(public_headers)
+  noinst_HEADERS = $(headers)
+else
+  noinst_HEADERS = $(headers) $(public_headers)
+endif
+
diff --git a/src/lib-sieve/plugins/variables/Makefile.am b/src/lib-sieve/plugins/variables/Makefile.am
index 85e3df869491c13a6e31944bea9f362ef5f23eff..410fe97011c28ad101f02c3164e74d28b6d74425 100644
--- a/src/lib-sieve/plugins/variables/Makefile.am
+++ b/src/lib-sieve/plugins/variables/Makefile.am
@@ -24,12 +24,23 @@ libsieve_ext_variables_la_SOURCES = \
 	$(tsts) \
 	ext-variables.c
 
-noinst_HEADERS = \
+public_headers = \
+	sieve-ext-variables.h 
+
+headers = \
 	ext-variables-common.h \
 	ext-variables-limits.h \
 	ext-variables-name.h \
 	ext-variables-arguments.h \
 	ext-variables-operands.h \
 	ext-variables-modifiers.h \
-	ext-variables-dump.h \
-	sieve-ext-variables.h 
+	ext-variables-dump.h
+
+if INSTALL_HEADERS
+  pkginc_libdir=$(pkgincludedir)/sieve
+  pkginc_lib_HEADERS = $(public_headers)
+  noinst_HEADERS = $(headers)
+else
+  noinst_HEADERS = $(headers) $(public_headers)
+endif
+
diff --git a/src/plugins/lda-sieve/Makefile.am b/src/plugins/lda-sieve/Makefile.am
index 0ff34473a81837297cf3281efbb23fd734683031..ddbcfde2a30a84011fe9b477b894e35980200973 100644
--- a/src/plugins/lda-sieve/Makefile.am
+++ b/src/plugins/lda-sieve/Makefile.am
@@ -13,7 +13,7 @@ lib90_sieve_plugin_la_LDFLAGS = -module -avoid-version
 module_LTLIBRARIES = lib90_sieve_plugin.la
 
 lib90_sieve_plugin_la_LIBADD = \
-	$(top_srcdir)/src/lib-sieve/libsieve.la
+	$(top_srcdir)/src/lib-sieve/libdovecot-sieve.la
 
 lib90_sieve_plugin_la_SOURCES = \
 	lda-sieve-plugin.c 
diff --git a/src/sieve-tools/Makefile.am b/src/sieve-tools/Makefile.am
index b12eb620675a947634e50f5d3056216b14253f72..dc9d393b10ac44467a64c2955cf82817cafabef0 100644
--- a/src/sieve-tools/Makefile.am
+++ b/src/sieve-tools/Makefile.am
@@ -24,7 +24,7 @@ AM_CPPFLAGS = \
 	-I$(dovecot_incdir)/src/lib-storage/index/raw
 
 libs = \
-	$(top_srcdir)/src/lib-sieve/libsieve.la \
+	$(top_srcdir)/src/lib-sieve/libdovecot-sieve.la \
 	$(top_srcdir)/src/lib-sieve-tool/libsieve-tool.la \
 	$(dovecot_incdir)/src/lib-storage/libdovecot-storage.la \
 	$(dovecot_incdir)/src/lib-dovecot/libdovecot.la \
diff --git a/src/testsuite/Makefile.am b/src/testsuite/Makefile.am
index fb8c9f5501c4f9bec8db3cc6675bf48167186759..56cd7ea7b856cee669d7e25b52ba919124e8d688 100644
--- a/src/testsuite/Makefile.am
+++ b/src/testsuite/Makefile.am
@@ -17,7 +17,7 @@ AM_CPPFLAGS = \
 testsuite_LDFLAGS = -export-dynamic
 
 libs = \
-	$(top_srcdir)/src/lib-sieve/libsieve.la \
+	$(top_srcdir)/src/lib-sieve/libdovecot-sieve.la \
 	$(top_srcdir)/src/lib-sieve-tool/libsieve-tool.la \
 	$(dovecot_incdir)/src/lib-storage/libdovecot-storage.la \
 	$(dovecot_incdir)/src/lib-dovecot/libdovecot.la