mmc-agent is back

This commit is contained in:
Bertrand Gouny committed 2014-08-27 17:55:45 +02:00
1 parent 731d92cb2e
commit c788c20245
7 files changed
+135 -65

No files matched your search

+18 -4
View File
@@ -5,9 +5,13 @@ MAINTAINER Bertrand Gouny <bertrand.gouny@osixia.net>
# https://github.com/nickstenning/docker-slapd
# Default configuration: can be overridden at the docker command line
ENV LDAP_DOMAIN example.com
ENV LDAP_ADMIN_PWD toor
ENV LDAP_ORGANISATION Example Inc.
ENV LDAP_DOMAIN example.com
ENV WITH_MMC_AGENT false
ENV MMC_AGENT_LOGIN mmc-docker
ENV MMC_AGENT_PASSWORD passw0rd
# /!\ To store the data outside the container,
# mount /var/lib/ldap and /etc/ldap/slapd.d as a data volume add
@@ -23,14 +27,17 @@ RUN /sbin/enable-service dnsmasq
# Use baseimage-docker's init system.
CMD ["/sbin/my_init"]
# Add Mandriva MDS repository
RUN echo "deb http://mds.mandriva.org/pub/mds/debian wheezy main" >> /etc/apt/sources.list
# Resynchronize the package index files from their sources
RUN apt-get -y update
# Install openldap (slapd) and ldap-utils
RUN LC_ALL=C DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends slapd ldap-utils
RUN LC_ALL=C DEBIAN_FRONTEND=noninteractive apt-get install -y --force-yes --no-install-recommends slapd ldap-utils mmc-agent python-mmc-mail
# Expose ldap default port
EXPOSE 389
# Expose ldap and mmc-agent default ports
EXPOSE 389 7080
# Create TLS certificats directory
RUN mkdir /etc/ldap/ssl
@@ -39,9 +46,16 @@ RUN mkdir /etc/ldap/ssl
RUN mkdir /etc/ldap/config
ADD service/slapd/assets/config /etc/ldap/config
RUN mkdir -p /etc/mmc/agent/assets
ADD service/mmc-agent/assets /etc/mmc/agent/assets
# Add slapd deamon
RUN mkdir /etc/service/slapd
ADD service/slapd/slapd.sh /etc/service/slapd/run
# Add mmc-agent deamon
RUN mkdir /etc/service/mmc-agent
ADD service/mmc-agent/mmc-agent.sh /etc/service/mmc-agent/run
# Clear out the local repository of retrieved package files
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
@@ -0,0 +1,3 @@
[userdefault]
mailbox = /home/vmail/%uid%/
mailuserquota = 204800
+6
View File
@@ -0,0 +1,6 @@
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
include /usr/share/doc/mmc/contrib/base/mmc.schema
include /usr/share/doc/mmc/contrib/mail/mail.schema
+93
View File
@@ -0,0 +1,93 @@
#!/bin/sh
# -e Exit immediately if a command exits with a non-zero status
set -e
WITH_MMC_AGENT=${WITH_MMC_AGENT}
# Run mmc-agent
if [ "$WITH_MMC_AGENT" = true ]; then
# Openldap is configured
if [ -e /etc/ldap/slapd.d/docker_bootstrapped ]; then
# mmc-agent is not already configured
if [ ! -e /etc/mmc/agent/docker_bootstrapped ]; then
status "configuring mmc-agent for first run"
status () {
echo "---> ${@}" >&2
}
getBaseDn () {
IFS="."
export IFS
domain=$1
init=1
for s in $domain; do
dc="dc=$s"
if [ "$init" -eq 1 ]; then
baseDn=$dc
init=0
else
baseDn="$baseDn,$dc"
fi
done
}
WITH_MMC_AGENT=${WITH_MMC_AGENT}
LDAP_DOMAIN=${LDAP_DOMAIN}
LDAP_ADMIN_PWD=${LDAP_ADMIN_PWD}
MMC_AGENT_LOGIN=${MMC_AGENT_LOGIN}
MMC_AGENT_PASSWORD=${MMC_AGENT_PASSWORD}
# mmc-agent config
sed -i -e "s/127.0.0.1/0.0.0.0/" /etc/mmc/agent/config.ini
sed -i -e "s/login = mmc/login = $MMC_AGENT_LOGIN/" /etc/mmc/agent/config.ini
sed -i -e "s/password = s3cr3t/password = $MMC_AGENT_PASSWORD/" /etc/mmc/agent/config.ini
# generate ssl certificate
rm /etc/mmc/agent/keys/cacert.pem /etc/mmc/agent/keys/localcert.pem
/sbin/create-ssl-cert $LDAP_DOMAIN /etc/mmc/agent/keys/cacert.pem /etc/mmc/agent/keys/localcert.pem
# Get base dn from ldap domain
getBaseDn ${LDAP_DOMAIN}
sed -i -e "s/dc=mandriva, dc=com/$baseDn/" /etc/mmc/plugins/base.ini
sed -i -e "s/password = secret/password = $LDAP_ADMIN_PWD/" /etc/mmc/plugins/base.ini
mkdir /home/archives
# Mail plugin
sed -i -e 's/vDomainSupport = 0/vDomainSupport = 1/g' /etc/mmc/plugins/mail.ini
sed -i -e 's/vAliasesSupport = 0/vAliasesSupport = 1/g' /etc/mmc/plugins/mail.ini
cat /etc/mmc/agent/assets/append_to_mail.ini >> /etc/mmc/plugins/mail.ini
touch /etc/mmc/agent/docker_bootstrapped
else
status "found already-configured mmc-agent"
fi
# Run mmc-agent
exec /usr/sbin/mmc-agent -d
# wait openldap config done
else
sleep 3s
fi
# Do nothing but needed for runit
else
sleep 1d
fi
-43
View File
@@ -1,43 +0,0 @@
# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 2e9a2075
dn: cn=mail,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: mail
olcAttributeTypes: {0}( 1.3.6.1.4.1.21103.1.1.13.1 NAME 'maildrop' DESC 'Mail
addresses where mails are forwarded -- ie forwards' EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{512} )
olcAttributeTypes: {1}( 1.3.6.1.4.1.21103.1.1.13.2 NAME 'mailalias' DESC 'Mail
addresses accepted by this account -- ie aliases' EQUALITY caseIgnoreMatch S
UBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{512} )
olcAttributeTypes: {2}( 1.3.6.1.4.1.21103.1.1.13.3 NAME 'mailenable' DESC 'Mai
l Account / Virtual alias validity' EQUALITY caseIgnoreMatch SUBSTR caseIgnor
eSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{8} )
olcAttributeTypes: {3}( 1.3.6.1.4.1.21103.1.1.13.4 NAME 'mailbox' DESC 'Mailbo
x path where mails are delivered' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreS
ubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{512} )
olcAttributeTypes: {4}( 1.3.6.1.4.1.21103.1.1.13.5 NAME 'virtualdomain' DESC '
A mail domain name' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{512} )
olcAttributeTypes: {5}( 1.3.6.1.4.1.21103.1.1.13.6 NAME 'virtualdomaindescript
ion' DESC 'Virtual domain description' EQUALITY caseIgnoreMatch SUBSTR caseIg
noreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{512} )
olcAttributeTypes: {6}( 1.3.6.1.4.1.21103.1.1.13.7 NAME 'mailuserquota' DESC '
Mailbox quota for a user in kilo-bytes' EQUALITY integerMatch SYNTAX 1.3.6.1.
4.1.1466.115.121.1.27 SINGLE-VALUE )
olcAttributeTypes: {7}( 1.3.6.1.4.1.21103.1.1.13.8 NAME 'mailhost' DESC 'The m
ail server IP address or FQDN for a user' EQUALITY caseIgnoreIA5Match SUBSTR
caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} SINGLE
-VALUE )
olcAttributeTypes: {8}( 1.3.6.1.4.1.21103.1.1.13.9 NAME 'mailaliasmember' DESC
'Member of a virtual alias' SUP distinguishedName )
olcObjectClasses: {0}( 1.3.6.1.4.1.21103.1.2.13.1 NAME 'mailAccount' DESC 'Mai
l Account' SUP top AUXILIARY MUST mail MAY ( mailalias $ maildrop $ mailenabl
e $ mailbox $ mailuserquota $ mailhost ) )
olcObjectClasses: {1}( 1.3.6.1.4.1.21103.1.2.13.2 NAME 'mailDomain' DESC 'Doma
in mail entry' SUP top STRUCTURAL MUST virtualdomain MAY ( virtualdomaindescr
iption $ mailuserquota ) )
olcObjectClasses: {2}( 1.3.6.1.4.1.21103.1.2.13.3 NAME 'mailGroup' DESC 'Mail
Group' SUP top AUXILIARY MUST mail )
olcObjectClasses: {3}( 1.3.6.1.4.1.21103.1.2.13.4 NAME 'mailAlias' DESC 'Mail
Alias' SUP top STRUCTURAL MUST mailalias MAY ( mail $ mailaliasmember $ maile
nable ) )
-18
View File
@@ -1,18 +0,0 @@
# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 7a435a3b
dn: cn=mmc,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: mmc
olcAttributeTypes: {0}( 1.3.6.1.4.1.40098.1.1.12.1 NAME 'lmcACL' DESC 'LMC acl
entry' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.
6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
olcAttributeTypes: {1}( 1.3.6.1.4.1.40098.1.1.12.2 NAME 'lmcPrefMode' DESC 'LM
C user preferences' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
olcAttributeTypes: {2}( 1.3.6.1.4.1.40098.1.1.12.3 NAME 'lmcPrinterAllowed' DE
SC 'LMC a printer where the user has the rights to print' EQUALITY caseIgnore
IA5Match SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.2
6 )
olcObjectClasses: {0}( 1.3.6.1.4.1.40098.1.2.1.19.1 NAME 'lmcUserObject' DESC
'Objectclass for LMC user settings ' AUXILIARY MAY ( lmcACL $ lmcPrefMode $ l
mcPrinterAllowed ) )
+15
View File
@@ -49,6 +49,21 @@ if [ ! -e /etc/ldap/slapd.d/docker_bootstrapped ]; then
slapd -h "ldapi:///" -u openldap -g openldap
chown -R openldap:openldap /etc/ldap
if [ "$WITH_MMC_AGENT" = true ]; then
# Convert needed mmc ldap schema to ldif
mkdir -p /etc/ldap/schema/converted
slaptest -f /etc/mmc/agent/assets/convert_to_ldif -F /etc/ldap/schema/converted
sed -i -e 's/^dn:.*$/dn: cn=mmc,cn=schema,cn=config/; s/^cn:.*$/cn: mmc/; /^structuralObjectClass:.*$/d; /^entryUUID:.*$/d; /^creatorsName:.*$/d; /^createTimestamp:.*$/d; /^entryCSN:.*$/d; /^modifiersName:.*$/d; /^modifyTimestamp:.*$/d' /etc/ldap/schema/converted/cn\=config/cn\=schema/cn=\{4\}mmc.ldif
sed -i -e 's/^dn:.*$/dn: cn=mail,cn=schema,cn=config/; s/^cn:.*$/cn: mail/; /^structuralObjectClass:.*$/d; /^entryUUID:.*$/d; /^creatorsName:.*$/d; /^createTimestamp:.*$/d; /^entryCSN:.*$/d; /^modifiersName:.*$/d; /^modifyTimestamp:.*$/d' /etc/ldap/schema/converted/cn\=config/cn\=schema/cn=\{5\}mail.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/converted/cn\=config/cn\=schema/cn=\{4\}mmc.ldif -Q
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/converted/cn\=config/cn\=schema/cn=\{5\}mail.ldif -Q
fi
# TLS
if [ -e /etc/ldap/ssl/ldap.crt ] && [ -e /etc/ldap/ssl/ldap.key ] && [ -e /etc/ldap/ssl/ca.crt ]; then
status "certificates found"