Exchange E-Mails zu externen Empfängern versenden

Für den Versand von E-Mails zu externen Domains/Empfängern ist eine Anpassung des Exchange 2010 Empfangsconectors via Powershell erforderlich.

Niemand hat gerne ein offenes Relay (Versand von E-Mails ohne Authentifizierung)  in seinem Netzwerk. In manchen Fällen ist es jedoch erforderlich, dass E-Mails von Systemen über den Exchange per SMTP nach außen (außerhalb der eigenen Domain) zugestellt werden. Dies erfolgt über die Konfiguration und Anpassung eines separaten Empfangsconnectors.

Mit einem einfachen Befehl lässt sich diese Einstellung anpassen und ein Empfangsconnector dafür freischalten.
ACHTUNG – Microsoft hat bei den Powershellbefehlen die Berechtigungen eingedeutscht. So auch beim Befehl ADDPermisssion und funktioniert so nur bei deutschen Exchange-Servern. Im untenstehenden Beispiel wird der Befehl für den „External Relay“ Connector abgesetzt.

<br />
# Von der Exchange Powershellkonsole ausführen:<br />
Get-ReceiveConnector "EXTERNAL RELAY" | Add-ADPermission -User "NT-AUTORITÄT\ANONYMOUS-ANMELDUNG" -ExtendedRights "ms-Exch-SMTP-Accept-Any-Recipient"<br />

Anschließend erhaltet ihr aus Ausgabe eine Meldung in der folgenden Art:

[PS] C:\Windows\system32>Get-ReceiveConnector "EXTERNAL RELAY" | Add-ADPermission -User "NT-AUTORITÄT\ANONYMOUS-ANMELDUNG"
-ExtendedRights "ms-Exch-SMTP-Accept-Any-Recipient"

Identity User Deny Inherited
——– —- —- ———
EXCHANGE\EXTERNAL RELAY NT-AUTORITÄT\ANON… False False

Achtung!

Damit macht ihr aus Eurem Exchangeserver ein „Offenes Relay“. Achtet aus diesem Grund darauf, dass der E-Mail-Server nur für gewünschte Clients/Teilnehmer im Netzwerk erreichbar ist, damit ihr nicht versehentlich zu einem Spamversender werdet.

Redmine Git Hosting Plugin installieren / Ubuntu 14.04 oder höher

Nach der erfolgreicher Installation von Redmine eröffnete sich für mich noch die Anforderung, ein git Repository zur Verfügung zu stellen.
Angelehnt an der originalen Anleitung habe ich die Installation vorgenommen. Ich liste hier die Schritte noch mal ergänzt um ein paar Kleinigkeiten auf.

Deaktiviert Redmine durch stoppen des Apache2

<br />
sudo service apache2 stop<br />

1. Installiert mit apt die Voraussetzungen

<br />
sudo apt-get install build-essential libssh2-1 libssh2-1-dev cmake libgpg-error-dev pkg-config<br />

2. Klont die Plugins

Als nächstes das  Bootsrap Kit klonen

<br />
cd /var/www/redmine/plugins<br />
sudo git clone https://github.com/jbox-web/redmine_bootstrap_kit.git<br />
cd redmine_bootstrap_kit/<br />
sudo git checkout 0.2.4<br />

Als nächstes das Git Hosting Plugin klonen:

<br />
# Then Redmine Git Hosting plugin<br />
cd /var/www/redmine/plugins<br />
sudo git clone https://github.com/jbox-web/redmine_git_hosting.git<br />
cd redmine_git_hosting/<br />
sudo git checkout 1.2.0<br />

Installiere gems und migriere Datenbank

<br />
cd /var/www/redmine/plugins<br />
sudo bundle install --without development test<br />

Als nächstes überprüft ihr das Gemfile des git_hosting Plugins, um sicherzustellen, dass dort der Bereich „Redmine 3.x“ aktiv und der Bereich „Redmine 2.x“ auskommentiert ist.

git_hosting Plugin Gemfile check Version of Redmine
git_hosting Plugin Gemfile check Version of Redmine

Jetzt könnt ihr die Bundle ausführen

<br />
sudo bundle exec rake redmine:plugins:migrate RAILS_ENV=production NAME=redmine_git_hosting<br />

SSL-Umgebung für Git einrichten

<br />
su - redmine<br />
mkdir ssh_keys<br />
ssh-keygen -N '' -f ssh_keys/redmine_gitolite_admin_id_rsa<br />

Anschließend noch die Einrichtung des Zertifikats im Apache2
<br />
sudo mkdir -p /var/www/redmine/ssh_keys<br />
sudo ssh-keygen -N '' -f /var/www/redmine/ssh_keys/redmine_gitolite_admin_id_rsa<br />

Als nächstes stehen die folgenden Schritte an:

  • Legt einen Nutzer an namens „git“
  • Kopiert das Zertifikat in das git Home Verzeichnis:
     sudo cp ../redmine/ssh_keys/redmine_gitolite_admin_id_rsa.pub ../git/ 
  • Loggt Euch als dieser User mit su – git ein

</p>
<p>su - git<br />
# Erweitert die Path-Variable<br />
PATH="$PATH:$HOME/bin"</p>
<p>mkdir $HOME/bin<br />
source $HOME/.profile<br />
git clone git://github.com/sitaramc/gitolite<br />
gitolite/install -to $HOME/bin<br />
gitolite setup -pk redmine_gitolite_admin_id_rsa.pub<br />

Editiert die .gitolite.rc, so dass sie Hooks akzeptiert

su - git<br />
vi (or nano) .gitolite.rc<br />
## Look for GIT_CONFIG_KEYS and make it look like :<br />
GIT_CONFIG_KEYS  =>  '.*',<br />
## Enable local code directory<br />
LOCAL_CODE       =>  "$ENV{HOME}/local"

Als nächstes meldet wieder ab und erzeugt folgende Datei
<br />
sudo vim /etc/sudoers.d/redmine<br />

mit folgendem Inhalt:
<br />
Defaults:redmine !requiretty<br />
redmine ALL=(git) NOPASSWD:ALL<br />

und ändert die Berechtigung der Datei
<br />
sudo chmod 440 /etc/sudoers.d/redmine<br />

Fügt den Gitolite Server zur Liste der bekannten Hosts hinzu:
<br />
su - redmine<br />
ssh -i ssh_keys/redmine_gitolite_admin_id_rsa git@localhost info<br />

Anschließend solltet ihre Meldung ähnlich der folgenden erhalten:10-05-_2016_12-48-04

Als letztes installiert ihr noch den RUBY-Interpreter, falls er nicht schon auf dem System installiert ist.

<br />
sudo apt-get install ruby<br />

An dieser Stelle habt ihr Euer Redmine Git Hosting Plugin erfolgreich installiert!
Jetzt aktiviert noch in den Einstellungen das Xitolite bei den Repositories.
10-05-_2016_13-04-45

und installiert Eure Hooks.

Redmine auf einem frischen Ubuntu 14.04 LTS installieren

Ein einfaches „apt-get install redmine“ reicht nicht mehr, um eine aktuelle Redmine-Installation auf Ubuntu zu installieren. Aus diesem Grund dokumentiere ich hier, wie ich bei mir Redmine installiert habe.

Orientiert an dieser Anleitung poste ich hier meine Arbeitsschritte:

Prequisits / Voraussetzungen für Redmine schaffen

Apache installieren

<br />
apt-get install --no-install-recommends apache2 libapache2-mod-passenger logrotate ssl-cert<br />

Ruby, git und andere Redmine-Abhängigkeiten installieren:

<br />
apt-get install --no-install-recommends git ruby ruby-dev ruby-rmagick rake make gcc libmysqlclient-dev patch<br />

Quelltext von RUBY mittels git herunterladen
Apache installieren

<br />
cd /var/www<br />
git clone https://github.com/redmine/redmine<br />

Anschließend wird das redmine-repository geklont:

09-05-_2016_14-38-18

Anschließend wechselt ihr in das redmine-Verzeichnis und wechselt den Branch auf den aktuellen Stable:

<br />
cd redmine<br />
git checkout 3.1-stable<br />

Als nächstes bedienen wir uns dem offiziellen „Ruby Paketsystem“, um die Abhängigkeiten für Ruby downzuloaden. Achtet darauf, bei dem Befehl die HTTPS-Verbindung zur Paketquelle anzugeben!
Dafür müssen wir als erstes die Paketquelle in eine Datei schreiben mit dem Befehl:

09-05-_2016_14-52-18
GEMs Pakete für Redmine installieren

<br />
cat &lt;&lt; EOF &gt;&gt; /etc/gemrc<br />

In die Datei schreibt ihr die folgenden Zeilen:
<br />
:sources:<br />
- https://rubygems.org<br />
EOF<br />

Anschließend wechselt ihr in das Verzeichnis /var/www/redmine und installiert die Pakete „bundler“ und „nokogiri“
<br />
cd /var/www/redmine<br />
gem install --no-ri --no-rdoc bundler nokogiri<br />
hash -r<br />

An dieser Stelle weiche ich von der oben genannten englischen Anleitung ab und gebe meinen externen MySQL-Server an, indem ich die Config kopiere und editiere:

<br />
cd config<br />
sudo cp database.yml.example database.yml<br />
sudo vim database.yml<br />

Kopiert noch diese Zeilen in die database.yml:
<br />
# Clean up the environment<br />
unset REDMINE_PASSWORD<br />

09-05-_2016_15-08-26Nutze Bundler zum installieren erforderlicher gems und deaktiviere nicht genutzte:
<br />
cd /var/www/redmine<br />
bundle install --without development test postgresql sqlite rmagick<br />

09-05-_2016_15-01-10

Konfiguration

Um eine MySQL-Datenbank anzulegen, verbindet Euch mit dem MySQL-Server Eurer Wahl oder legt einen lokalen mittelt apt-get install mysql-server an.
Mit den folgenden Befehlen legt ihr eine mysql-Datenbank mit einem zufääligen Passwort an:

<br />
REDMINE_PASSWORD=$(openssl rand -base64 33)<br />
mysql -e "CREATE DATABASE redmine CHARACTER SET utf8;"<br />
mysql -e "CREATE USER 'redmine'@'localhost' IDENTIFIED BY '$REDMINE_PASSWORD';"<br />
mysql -e "GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';"<br />

Redmine

Als nächstes legt ihr einen User „redmine“ an:

<br />
adduser --quiet --system --group --gecos 'Passenger user for redmine' --shell /usr/sbin/nologin --home /nonexistent --no-create-home redmine<br />

Korrigiert die Berechtigung für die Konfigurationsdatei:

<br />
touch /var/www/redmine/config/database.yml<br />
chmod 640 /var/www/redmine/config/database.yml<br />
chgrp redmine /var/www/redmine/config/database.yml<br />

Als nächstes legt eine configuration.yml an und füllt sie mit den nachstehenden Inhalten:

<br />
touch /var/www/redmine/config/configuration.yml<br />
chmod 640 /var/www/redmine/config/configuration.yml<br />
chgrp redmine /var/www/redmine/config/configuration.yml<br />
cat << EOF > /var/www/redmine/config/database.yml<br />

<br />
production:<br />
  adapter: mysql2<br />
  database: redmine<br />
  # XXX: Unix sockets are faster than loopback connections<br />
  #host: 127.0.0.1<br />
  socket: /var/run/mysqld/mysqld.sock<br />
  username: redmine<br />
  password: "$REDMINE_PASSWORD"<br />
  encoding: utf8<br />
EOF<br />

Solltet ihr an dieser Stelle Berechtigungsprobleme erhalten, versucht es nochmal mit sudo -i.

Als nächstes bereitet ihr die Datenbank vor inklusive Beispieldaten:

<br />
# Re-run Bundler to automatically install the right DB adapter now that database.yml is populated<br />
cd /var/www/redmine<br />
sudo bundle install --without development test postgresql sqlite rmagick</p>
<p># Generate a secret token and protect it<br />
sudo rake generate_secret_token<br />
sudo chmod 0640 config/initializers/secret_token.rb<br />
sudo chgrp redmine config/initializers/secret_token.rb</p>
<p>sudo RAILS_ENV=production rake db:migrate<br />
sudo RAILS_ENV=production REDMINE_LANG=en rake redmine:load_default_data</p>
<p># Encrypt SCM and LDAP passwords<br />
sudo RAILS_ENV=production rake db:encrypt<br />

Bereite ein paar Verzeichnisse vor:

<br />
cd /var/www/redmine<br />
mkdir -p tmp tmp/pdf public/plugin_assets<br />
sudo chown -R redmine: files log tmp public/plugin_assets<br />
sudo chmod -R 0755 public/plugin_assets<br />
sudo chmod -R 0750 files log tmp  # can contain sensitive data<br />
sudo find files log tmp public/plugin_assets -type f -exec chmod -x {} +<br />

Konfiguriere die LOG-Rotation, damit die Log-Dateien nicht das Dateisystem vollschreiben:
<br />
sudo -i<br />
cat << EOF > /etc/logrotate.d/redmine<br />
/var/www/redmine/log/*.log {<br />
  daily<br />
  missingok<br />
  rotate 7<br />
  compress<br />
  notifempty<br />
  copytruncate<br />
}<br />
EOF<br />
exit<br />

Apache Konfiguration

Ich werde als Aufruf-URL ein https://host/pm konfigurieren. Dafür ergänze ich in der configuration.yml folgende Zeilen:

<br />
  # Configuration of the autologin cookie.<br />
  # autologin_cookie_name: the name of the cookie (default: autologin)<br />
  # autologin_cookie_path: the cookie path (default: /)<br />
  # autologin_cookie_secure: true sets the cookie secure flag (default: false)<br />
  autologin_cookie_name:<br />
  autologin_cookie_path: "/pm"<br />
  autologin_cookie_secure: true<br />

Anschließend lege ich einen symbolischen Link an:
<br />
ln -s public pm<br />

Optional könnt ihr ungenutzte Module entfernen:
<br />
a2dismod access_compat alias authz_groupfile autoindex cgid deflate dir env filter negotiation status > /dev/null<br />

Konfiguriert die SSL-Konfiguration des Apache

<br />
cat << EOF > /etc/apache2/sites-available/pm.svc.sdeziel.info-ssl.conf<br />
<VirtualHost _default_:443><br />
  ServerName  EUER_SERVERNAME<br />
  ServerAdmin webmaster@EUREDOMAIN.DE</p>
<p>  ErrorLog /var/log/apache2/redmine-error.log<br />
  CustomLog /var/log/apache2/redmine.log combined</p>
<p>  SSLEngine On<br />
  SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem<br />
  SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key</p>
<p>  # Passenger user<br />
  PassengerUser redmine</p>
<p>  # XXX: If NOT using a sub-URI<br />
  #DocumentRoot /var/www/redmine/public</p>
<p>  # XXX: If using a sub-URI (/pm)<br />
  DocumentRoot /var/www/redmine/pm<br />
  RailsBaseURI /pm<br />
  PassengerAppRoot /var/www/redmine<br />
</VirtualHost><br />
EOF<br />

Den nachfolgenden Schritt in der Anleitung kann ich nicht nachvollziehen, habe ihn aber dennoch durchgeführt:
„Tweak Passenger performance:“
<br />
cat << EOF > /etc/apache2/conf-available/zz-passenger-performance.conf<br />
# Passenger tuning<br />
PassengerMaxPoolSize 2<br />
PassengerMinInstances 1<br />
# XXX: Pick one of those PassengerPreStart<br />
#PassengerPreStart https://pm.svc.sdeziel.info/<br />
#PassengerPreStart https://pm.svc.sdeziel.info/pm<br />
PassengerMaxRequests 5000<br />
PassengerUploadBufferDir /tmp/<br />
# Breaks compatibility with mod_autoindex and mod_rewrite<br />
PassengerHighPerformance on</p>
<p># Do not reveal too much about the server<br />
ServerTokens Prod<br />
ServerSignature Off<br />

Es empfiehlt sich, nur HTTPS-Verbindungen zuzulassen:
<br />
sudo a2dissite default 000-default default-ssl<br />
sudo a2ensite EUER_SERVERNAME.info-ssl<br />
sudo a2enmod ssl passenger<br />
sudo a2enconf zz-passenger-performance</p>
<p>sudo apache2ctl -S && service apache2 restart<br />

</p>
<p>