diff --git a/net-im/jabberd2/Manifest b/net-im/jabberd2/Manifest
new file mode 100644
index 0000000..ba182ce
--- /dev/null
+++ b/net-im/jabberd2/Manifest
@@ -0,0 +1,12 @@
+AUX jabberd2-2.2.1.init 1625 RMD160 eb56ebb821ca11bdd09ddf07ba0899f75273e022 SHA1 d7116a599165535d8adf64da89e31f5342309291 SHA256 23c37f789d84575824a3cd8d009c88e7035ca1222cdb24e0c8437e1a6e55bec1
+AUX jabberd2-2.2.1.pamd 158 RMD160 3143cb1689fbebb51c0d72fa4c6b79ee9c015185 SHA1 5a95607d50b470107e9a0556fb4591688faff02c SHA256 eba4b5cc68b3dd327cfa1afdadbe5adf6d9383f4c79c7661169a4339e40b9a7b
+AUX jabberd2-2.2.16.init 1626 RMD160 6fd32051a2ce16adbf1bbcbadb652bf4cd878a06 SHA1 48a7ba6e38b89fdbd41353e4c68ac43174d4e992 SHA256 fb014b0b11e499fd67ce7918939320cc97acecd3a1e055dde554e569a3d48843
+AUX jabberd2-2.2.16.pamd 158 RMD160 3143cb1689fbebb51c0d72fa4c6b79ee9c015185 SHA1 5a95607d50b470107e9a0556fb4591688faff02c SHA256 eba4b5cc68b3dd327cfa1afdadbe5adf6d9383f4c79c7661169a4339e40b9a7b
+AUX jabberd2-2.2.4.init 1625 RMD160 ef5c466dd5976cfa7aac5abb797b103befc52e60 SHA1 5a66d45559bae3d946e92ff517e7a3c0eabb9f11 SHA256 f01a66b3303f1ac366492e913a82952996b75619335ae210357e43e4fbed37a7
+AUX jabberd2-2.2.4.pamd 158 RMD160 3143cb1689fbebb51c0d72fa4c6b79ee9c015185 SHA1 5a95607d50b470107e9a0556fb4591688faff02c SHA256 eba4b5cc68b3dd327cfa1afdadbe5adf6d9383f4c79c7661169a4339e40b9a7b
+AUX jabberd2-2.2.5.init 1622 RMD160 e9caa803b5e4c69e84d3257591c12ab95c0917bd SHA1 05cd2427166a84948bce1a841c2f632b5c4b9bd4 SHA256 0f89246b7240f7f4ce528734a054d32bb63c7195c4a278362265ed818d6049e3
+AUX jabberd2-2.2.5.pamd 158 RMD160 3143cb1689fbebb51c0d72fa4c6b79ee9c015185 SHA1 5a95607d50b470107e9a0556fb4591688faff02c SHA256 eba4b5cc68b3dd327cfa1afdadbe5adf6d9383f4c79c7661169a4339e40b9a7b
+AUX jabberd2-2.2.8.init 1625 RMD160 6c0f847a6b220f379244e2d47b1c0ae59615803c SHA1 fc1cf432b2a12ef924eb4707d9804c3e1d58d0e7 SHA256 38e08cc155b9a7f7781a3255f7a1bbb885fed9eb22d72a37349b5f7790cf1689
+AUX jabberd2-2.2.8.pamd 158 RMD160 3143cb1689fbebb51c0d72fa4c6b79ee9c015185 SHA1 5a95607d50b470107e9a0556fb4591688faff02c SHA256 eba4b5cc68b3dd327cfa1afdadbe5adf6d9383f4c79c7661169a4339e40b9a7b
+DIST jabberd-2.2.16.tar.gz 2818476 RMD160 c778babd0a883506f874dff56f879f800533e73c SHA1 d39f7475ec676a127e948f2c5f73d7605ec5a7f9 SHA256 112844e0319dc31faf9225930fe10f811b9faefe2e4e30b73d8e3ab965a7d4bf
+EBUILD jabberd2-2.2.16.ebuild 2954 RMD160 f011a020acf3459714e47e020dc897b881aff68b SHA1 813d37964141792db744edb8b5c1826b46dc2c30 SHA256 70e31b45b2ac1d41d74dc32d10f0f8d943a0d18e0f321fb400172f86ef743cf8
diff --git a/net-im/jabberd2/files/jabberd2-2.2.1.init b/net-im/jabberd2/files/jabberd2-2.2.1.init
new file mode 100644
index 0000000..085e6d0
--- /dev/null
+++ b/net-im/jabberd2/files/jabberd2-2.2.1.init
@@ -0,0 +1,77 @@
+#!/sbin/runscript
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-im/jabberd2/files/jabberd2-2.2.1.init,v 1.1 2008/07/30 11:34:36 gentoofan23 Exp $
+
+depend() {
+	need net
+	use mysql postgresql slapd
+	provide jabber-server
+}
+
+stopJabberServices() {
+
+	eindent
+	for pidfile in /var/run/jabber/*.pid; do
+		if [ -f "${pidfile}" ]; then
+			service=$(basename ${pidfile} .pid)
+			ebegin "Stopping ${service}"
+			start-stop-daemon \
+				--stop \
+				--pidfile ${pidfile}
+			eend $?
+		fi
+	done
+	eoutdent
+
+}
+
+start() {
+
+	einfo "Starting Jabber Server ..."
+	local services
+	services=$(grep -v ^# /etc/jabber/jabberd.cfg | grep '..*' | awk '{print $1 ":" $2}')
+	eindent
+	for service in ${services}; do
+
+		cfgfile=$(echo ${service} | cut -d ':' -f 2)
+		service=$(echo ${service} | cut -d ':' -f 1)
+		if [ ! -f "${cfgfile}" ]; then
+			if [ -f "/etc/jabber/${service}.xml" ]; then
+				cfgfile="/etc/jabber/${service}.xml"
+			else
+				eerror "Can't find: ${cfgfile} or default /etc/jabber/${service}.xml"
+				stopJabberServices
+				return 1
+			fi
+		fi
+
+		executable=/usr/bin/${service}
+
+		if [ ! -f "${executable}" ]; then
+			eerror "Can't find executable: ${executable}"
+			stopJabberServices
+			return 1
+		fi
+
+		ebegin "Starting ${service} (${cfgfile})"
+		start-stop-daemon \
+			--background \
+			--start  \
+			--chuid jabber:jabber \
+			--exec /usr/bin/${service} \
+			--pid /var/run/jabber/$(basename ${cfgfile%.xml}).pid \
+			-- -c ${cfgfile}
+		eend $?
+
+	done
+	eoutdent
+
+}
+
+stop() {
+
+	einfo "Stopping Jabber Server"
+	stopJabberServices
+
+}
diff --git a/net-im/jabberd2/files/jabberd2-2.2.1.pamd b/net-im/jabberd2/files/jabberd2-2.2.1.pamd
new file mode 100644
index 0000000..2c5a534
--- /dev/null
+++ b/net-im/jabberd2/files/jabberd2-2.2.1.pamd
@@ -0,0 +1,6 @@
+#%PAM-1.0
+
+auth       required     pam_nologin.so
+auth       include      system-auth
+account    include      system-auth
+session    include      system-auth
diff --git a/net-im/jabberd2/files/jabberd2-2.2.16.init b/net-im/jabberd2/files/jabberd2-2.2.16.init
new file mode 100644
index 0000000..deb986b
--- /dev/null
+++ b/net-im/jabberd2/files/jabberd2-2.2.16.init
@@ -0,0 +1,77 @@
+#!/sbin/runscript
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-im/jabberd2/files/jabberd2-2.2.16.init,v 1.1 2009/05/08 15:24:09 gentoofan23 Exp $
+
+depend() {
+	need net
+	use mysql postgresql slapd
+	provide jabber-server
+}
+
+stopJabberServices() {
+
+	eindent
+	for pidfile in /var/run/jabber/*.pid; do
+		if [ -f "${pidfile}" ]; then
+			service=$(basename ${pidfile} .pid)
+			ebegin "Stopping ${service}"
+			start-stop-daemon \
+				--stop \
+				--pidfile ${pidfile}
+			eend $?
+		fi
+	done
+	eoutdent
+
+}
+
+start() {
+
+	einfo "Starting Jabber Server ..."
+	local services
+	services=$(grep -v ^# /etc/jabber/jabberd.cfg | grep '..*' | awk '{print $1 ":" $2}')
+	eindent
+	for service in ${services}; do
+
+		cfgfile=$(echo ${service} | cut -d ':' -f 2)
+		service=$(echo ${service} | cut -d ':' -f 1)
+		if [ ! -f "${cfgfile}" ]; then
+			if [ -f "/etc/jabber/${service}.xml" ]; then
+				cfgfile="/etc/jabber/${service}.xml"
+			else
+				eerror "Can't find: ${cfgfile} or default /etc/jabber/${service}.xml"
+				stopJabberServices
+				return 1
+			fi
+		fi
+
+		executable=/usr/bin/${service}
+
+		if [ ! -f "${executable}" ]; then
+			eerror "Can't find executable: ${executable}"
+			stopJabberServices
+			return 1
+		fi
+
+		ebegin "Starting ${service} (${cfgfile})"
+		start-stop-daemon \
+			--background \
+			--start  \
+			--chuid jabber:jabber \
+			--exec /usr/bin/${service} \
+			--pid /var/run/jabber/$(basename ${cfgfile%.xml}).pid \
+			-- -c ${cfgfile}
+		eend $?
+
+	done
+	eoutdent
+
+}
+
+stop() {
+
+	einfo "Stopping Jabber Server"
+	stopJabberServices
+
+}
diff --git a/net-im/jabberd2/files/jabberd2-2.2.16.pamd b/net-im/jabberd2/files/jabberd2-2.2.16.pamd
new file mode 100644
index 0000000..2c5a534
--- /dev/null
+++ b/net-im/jabberd2/files/jabberd2-2.2.16.pamd
@@ -0,0 +1,6 @@
+#%PAM-1.0
+
+auth       required     pam_nologin.so
+auth       include      system-auth
+account    include      system-auth
+session    include      system-auth
diff --git a/net-im/jabberd2/files/jabberd2-2.2.4.init b/net-im/jabberd2/files/jabberd2-2.2.4.init
new file mode 100644
index 0000000..8d40b60
--- /dev/null
+++ b/net-im/jabberd2/files/jabberd2-2.2.4.init
@@ -0,0 +1,77 @@
+#!/sbin/runscript
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-im/jabberd2/files/jabberd2-2.2.4.init,v 1.1 2008/09/15 01:33:55 gentoofan23 Exp $
+
+depend() {
+	need net
+	use mysql postgresql slapd
+	provide jabber-server
+}
+
+stopJabberServices() {
+
+	eindent
+	for pidfile in /var/run/jabber/*.pid; do
+		if [ -f "${pidfile}" ]; then
+			service=$(basename ${pidfile} .pid)
+			ebegin "Stopping ${service}"
+			start-stop-daemon \
+				--stop \
+				--pidfile ${pidfile}
+			eend $?
+		fi
+	done
+	eoutdent
+
+}
+
+start() {
+
+	einfo "Starting Jabber Server ..."
+	local services
+	services=$(grep -v ^# /etc/jabber/jabberd.cfg | grep '..*' | awk '{print $1 ":" $2}')
+	eindent
+	for service in ${services}; do
+
+		cfgfile=$(echo ${service} | cut -d ':' -f 2)
+		service=$(echo ${service} | cut -d ':' -f 1)
+		if [ ! -f "${cfgfile}" ]; then
+			if [ -f "/etc/jabber/${service}.xml" ]; then
+				cfgfile="/etc/jabber/${service}.xml"
+			else
+				eerror "Can't find: ${cfgfile} or default /etc/jabber/${service}.xml"
+				stopJabberServices
+				return 1
+			fi
+		fi
+
+		executable=/usr/bin/${service}
+
+		if [ ! -f "${executable}" ]; then
+			eerror "Can't find executable: ${executable}"
+			stopJabberServices
+			return 1
+		fi
+
+		ebegin "Starting ${service} (${cfgfile})"
+		start-stop-daemon \
+			--background \
+			--start  \
+			--chuid jabber:jabber \
+			--exec /usr/bin/${service} \
+			--pid /var/run/jabber/$(basename ${cfgfile%.xml}).pid \
+			-- -c ${cfgfile}
+		eend $?
+
+	done
+	eoutdent
+
+}
+
+stop() {
+
+	einfo "Stopping Jabber Server"
+	stopJabberServices
+
+}
diff --git a/net-im/jabberd2/files/jabberd2-2.2.4.pamd b/net-im/jabberd2/files/jabberd2-2.2.4.pamd
new file mode 100644
index 0000000..2c5a534
--- /dev/null
+++ b/net-im/jabberd2/files/jabberd2-2.2.4.pamd
@@ -0,0 +1,6 @@
+#%PAM-1.0
+
+auth       required     pam_nologin.so
+auth       include      system-auth
+account    include      system-auth
+session    include      system-auth
diff --git a/net-im/jabberd2/files/jabberd2-2.2.5.init b/net-im/jabberd2/files/jabberd2-2.2.5.init
new file mode 100644
index 0000000..e6f2032
--- /dev/null
+++ b/net-im/jabberd2/files/jabberd2-2.2.5.init
@@ -0,0 +1,77 @@
+#!/sbin/runscript
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-im/jabberd2/files/jabberd2-2.2.5.init,v 1.1 2009/01/24 14:53:23 kingtaco Exp $
+
+depend() {
+	need net
+	use mysql postgresql slapd
+	provide jabber-server
+}
+
+stopJabberServices() {
+
+	eindent
+	for pidfile in /var/run/jabber/*.pid; do
+		if [ -f "${pidfile}" ]; then
+			service=$(basename ${pidfile} .pid)
+			ebegin "Stopping ${service}"
+			start-stop-daemon \
+				--stop \
+				--pidfile ${pidfile}
+			eend $?
+		fi
+	done
+	eoutdent
+
+}
+
+start() {
+
+	einfo "Starting Jabber Server ..."
+	local services
+	services=$(grep -v ^# /etc/jabber/jabberd.cfg | grep '..*' | awk '{print $1 ":" $2}')
+	eindent
+	for service in ${services}; do
+
+		cfgfile=$(echo ${service} | cut -d ':' -f 2)
+		service=$(echo ${service} | cut -d ':' -f 1)
+		if [ ! -f "${cfgfile}" ]; then
+			if [ -f "/etc/jabber/${service}.xml" ]; then
+				cfgfile="/etc/jabber/${service}.xml"
+			else
+				eerror "Can't find: ${cfgfile} or default /etc/jabber/${service}.xml"
+				stopJabberServices
+				return 1
+			fi
+		fi
+
+		executable=/usr/bin/${service}
+
+		if [ ! -f "${executable}" ]; then
+			eerror "Can't find executable: ${executable}"
+			stopJabberServices
+			return 1
+		fi
+
+		ebegin "Starting ${service} (${cfgfile})"
+		start-stop-daemon \
+			--background \
+			--start  \
+			--chuid jabber:jabber \
+			--exec /usr/bin/${service} \
+			--pid /var/run/jabber/$(basename ${cfgfile%.xml}).pid \
+			-- -c ${cfgfile}
+		eend $?
+
+	done
+	eoutdent
+
+}
+
+stop() {
+
+	einfo "Stopping Jabber Server"
+	stopJabberServices
+
+}
diff --git a/net-im/jabberd2/files/jabberd2-2.2.5.pamd b/net-im/jabberd2/files/jabberd2-2.2.5.pamd
new file mode 100644
index 0000000..2c5a534
--- /dev/null
+++ b/net-im/jabberd2/files/jabberd2-2.2.5.pamd
@@ -0,0 +1,6 @@
+#%PAM-1.0
+
+auth       required     pam_nologin.so
+auth       include      system-auth
+account    include      system-auth
+session    include      system-auth
diff --git a/net-im/jabberd2/files/jabberd2-2.2.8.init b/net-im/jabberd2/files/jabberd2-2.2.8.init
new file mode 100644
index 0000000..0c64021
--- /dev/null
+++ b/net-im/jabberd2/files/jabberd2-2.2.8.init
@@ -0,0 +1,77 @@
+#!/sbin/runscript
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-im/jabberd2/files/jabberd2-2.2.8.init,v 1.1 2009/05/08 15:24:09 gentoofan23 Exp $
+
+depend() {
+	need net
+	use mysql postgresql slapd
+	provide jabber-server
+}
+
+stopJabberServices() {
+
+	eindent
+	for pidfile in /var/run/jabber/*.pid; do
+		if [ -f "${pidfile}" ]; then
+			service=$(basename ${pidfile} .pid)
+			ebegin "Stopping ${service}"
+			start-stop-daemon \
+				--stop \
+				--pidfile ${pidfile}
+			eend $?
+		fi
+	done
+	eoutdent
+
+}
+
+start() {
+
+	einfo "Starting Jabber Server ..."
+	local services
+	services=$(grep -v ^# /etc/jabber/jabberd.cfg | grep '..*' | awk '{print $1 ":" $2}')
+	eindent
+	for service in ${services}; do
+
+		cfgfile=$(echo ${service} | cut -d ':' -f 2)
+		service=$(echo ${service} | cut -d ':' -f 1)
+		if [ ! -f "${cfgfile}" ]; then
+			if [ -f "/etc/jabber/${service}.xml" ]; then
+				cfgfile="/etc/jabber/${service}.xml"
+			else
+				eerror "Can't find: ${cfgfile} or default /etc/jabber/${service}.xml"
+				stopJabberServices
+				return 1
+			fi
+		fi
+
+		executable=/usr/bin/${service}
+
+		if [ ! -f "${executable}" ]; then
+			eerror "Can't find executable: ${executable}"
+			stopJabberServices
+			return 1
+		fi
+
+		ebegin "Starting ${service} (${cfgfile})"
+		start-stop-daemon \
+			--background \
+			--start  \
+			--chuid jabber:jabber \
+			--exec /usr/bin/${service} \
+			--pid /var/run/jabber/$(basename ${cfgfile%.xml}).pid \
+			-- -c ${cfgfile}
+		eend $?
+
+	done
+	eoutdent
+
+}
+
+stop() {
+
+	einfo "Stopping Jabber Server"
+	stopJabberServices
+
+}
diff --git a/net-im/jabberd2/files/jabberd2-2.2.8.pamd b/net-im/jabberd2/files/jabberd2-2.2.8.pamd
new file mode 100644
index 0000000..2c5a534
--- /dev/null
+++ b/net-im/jabberd2/files/jabberd2-2.2.8.pamd
@@ -0,0 +1,6 @@
+#%PAM-1.0
+
+auth       required     pam_nologin.so
+auth       include      system-auth
+account    include      system-auth
+session    include      system-auth
diff --git a/net-im/jabberd2/jabberd2-2.2.16.ebuild b/net-im/jabberd2/jabberd2-2.2.16.ebuild
new file mode 100644
index 0000000..71daa30
--- /dev/null
+++ b/net-im/jabberd2/jabberd2-2.2.16.ebuild
@@ -0,0 +1,110 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-im/jabberd2/jabberd2-2.2.16.ebuild,v 1.4 2012/02/20 12:16:52 naota Exp $
+
+inherit db-use eutils flag-o-matic pam
+
+DESCRIPTION="Open Source Jabber Server"
+HOMEPAGE="http://jabberd2.xiaoka.com/"
+SRC_URI="https://github.com/downloads/Jabberd2/${PN}/jabberd-${PV}.tar.gz"
+
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="~amd64 ~ppc ~sparc ~x86 ~x86-fbsd"
+IUSE="berkdb debug memdebug mysql ldap pam postgres sqlite ssl zlib"
+
+DEPEND="dev-libs/expat
+	net-libs/udns
+	>=net-dns/libidn-0.3
+	virtual/gsasl
+	berkdb? ( >=sys-libs/db-4.1.25 )
+	mysql? ( virtual/mysql )
+	ldap? ( >=net-nds/openldap-2.1.0 )
+	pam? ( virtual/pam )
+	postgres? ( dev-db/postgresql-base )
+	ssl? ( >=dev-libs/openssl-0.9.6b )
+	sqlite? ( >=dev-db/sqlite-3 )
+	zlib? ( sys-libs/zlib )"
+RDEPEND="${DEPEND}
+	>=net-im/jabber-base-0.01
+	!net-im/jabberd"
+
+S="${WORKDIR}/jabberd-${PV}"
+
+src_compile() {
+
+	# https://bugs.gentoo.org/show_bug.cgi?id=207655#c3
+	replace-flags -O[3s] -O2
+
+	use berkdb && myconf="${myconf} --with-extra-include-path=$(db_includedir)"
+
+	if use debug; then
+		myconf="${myconf} --enable-debug"
+		# --enable-pool-debug is currently broken
+		use memdebug && myconf="${myconf} --enable-nad-debug"
+	else
+		if use memdebug; then
+			ewarn
+			ewarn '"memdebug" requires "debug" enabled.'
+			ewarn
+		fi
+	fi
+
+	econf \
+		--sysconfdir=/etc/jabber \
+		--enable-fs --enable-pipe --enable-anon \
+		${myconf} \
+		$(use_enable berkdb db) \
+		$(use_enable ldap) \
+		$(use_enable mysql) \
+		$(use_enable pam) \
+		$(use_enable postgres pgsql) \
+		$(use_enable sqlite) \
+		$(use_enable ssl) \
+		$(use_with zlib)
+	emake || die "make failed"
+
+}
+
+src_install() {
+	emake DESTDIR="${D}" install || die "make install failed"
+
+	fowners jabber:jabber /usr/bin/{jabberd,router,sm,c2s,s2s}
+	fperms 750 /usr/bin/{jabberd,router,sm,c2s,s2s}
+
+	newinitd "${FILESDIR}/${P}.init" jabberd || die "newinitd failed"
+	newpamd "${FILESDIR}/${P}.pamd" jabberd || die "newpamd failed"
+
+	dodoc AUTHORS README UPGRADE
+	docinto tools
+	dodoc tools/db-setup{.mysql,.pgsql,.sqlite}
+	dodoc tools/{migrate.pl,pipe-auth.pl}
+
+	cd "${D}/etc/jabber/"
+	sed -i \
+		-e 's,/var/lib/jabberd/pid/,/var/run/jabber/,g' \
+		-e 's,/var/lib/jabberd/log/,/var/log/jabber/,g' \
+		-e 's,/var/lib/jabberd/db,/var/spool/jabber/,g' \
+		*.xml *.xml.dist || die "sed failed"
+	sed -i \
+		-e 's,<module>mysql</module>,<module>db</module>,' \
+		c2s.xml* || die "sed failed"
+	sed -i \
+		-e 's,<driver>mysql</driver>,<driver>db</driver>,' \
+		sm.xml* || die "sed failed"
+
+}
+
+pkg_postinst() {
+
+	if use pam; then
+		echo
+		ewarn 'Jabberd-2 PAM authentication requires your unix usernames to'
+		ewarn 'be in the form of "contactname@jabberdomain". This behavior'
+		ewarn 'is likely to change in future versions of jabberd-2. It may'
+		ewarn 'be advisable to avoid PAM authentication for the time being.'
+		echo
+		ebeep
+	fi
+
+}