Skip to content
This repository has been archived by the owner on Dec 20, 2020. It is now read-only.

Commit

Permalink
Password fixes (#168)
Browse files Browse the repository at this point in the history
Related to #156
  • Loading branch information
GyunerZeki committed Jul 28, 2017
1 parent 0941377 commit 0fc61e2
Show file tree
Hide file tree
Showing 5 changed files with 65 additions and 41 deletions.
4 changes: 2 additions & 2 deletions ManagementAPI/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@ hostname=__EASYMAIL_HOSTNAME__
dsn=$MYSQL_USERNAME:$MYSQL_PASSWORD@tcp($MYSQL_HOSTNAME:3306)/$MYSQL_DATABASE
[auth]
secretKey:__MANAGEMENT_API_SECRETKEY__
secretKey:$MANAGEMENT_API_SECRETKEY
username:$MANAGEMENT_API_USERNAME
password:__MANAGEMENT_API_PASSWORD__
password:$MANAGEMENT_API_PASSWORD
" > config.ini


Expand Down
35 changes: 18 additions & 17 deletions install.sh
Original file line number Diff line number Diff line change
@@ -1,10 +1,5 @@
set -e

export CURRENT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
export HOSTNAME=""
export SSL_CA_BUNDLE_FILE="/etc/dovecot/dovecot.pem"
export SSL_PRIVATE_KEY_FILE="/etc/dovecot/private/dovecot.pem"

# tmp workaround, please have a look at https://github.com/moby/moby/issues/13555
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
Expand All @@ -13,13 +8,13 @@ gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 94558F59
# Update and install initially required services
apt-get update -y && apt-get install openssl python dialog cron -y

function set_hostname {
sed -i "s/__EASYMAIL_HOSTNAME__/$HOSTNAME/g" $1
}
export CURRENT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )

export -f set_hostname
export HOSTNAME="__EASYMAIL_HOSTNAME__"
export SSL_CA_BUNDLE_FILE="/etc/dovecot/dovecot.pem"
export SSL_PRIVATE_KEY_FILE="/etc/dovecot/private/dovecot.pem"

export ADMIN_EMAIL="admin@__EASYMAIL_HOSTNAME__"
export ADMIN_EMAIL="admin@$HOSTNAME"
export ADMIN_PASSWORD_UNENCRYPTED='__EASYMAIL_ADMIN_PASSWORD_UNENCRYPTED__'
export ADMIN_PASSWORD=$(openssl passwd -1 $ADMIN_PASSWORD_UNENCRYPTED)

Expand All @@ -36,12 +31,18 @@ export ROUNDCUBE_MYSQL_USERNAME='roundcube_user'
export ROUNDCUBE_MYSQL_PASSWORD='__EASYMAIL_ROUNDCUBE_MYSQL_PASSWORD__'
export ROUNDCUBE_VERSION=1.2.5

export MANAGEMENT_API_USERNAME='easyadmin'
export MANAGEMENT_API_USERNAME='__EASYMAIL_MANAGEMENT_API_USERNAME__'
export MANAGEMENT_API_PASSWORD='__EASYMAIL_MANAGEMENT_API_PASSWORD__'
export MANAGEMENT_API_SECRETKEY='__EASYMAIL_MANAGEMENT_API_SECRETKEY__'

export EASY_MAIL_DIR="/opt/easymail" && mkdir $EASY_MAIL_DIR

function set_hostname {
sed -i "s/__EASYMAIL_HOSTNAME__/$HOSTNAME/g" $1
}

export -f set_hostname

# Install
bash $CURRENT_DIR/mysql/install.sh
bash $CURRENT_DIR/postfix/install.sh
Expand All @@ -57,7 +58,7 @@ bash $CURRENT_DIR/dkim/install.sh
# Save the system configurations
echo "
[general]
general_hostname:
general_hostname:__EASYMAIL_HOSTNAME__
[ssl]
public_dovecot_key:$SSL_CA_BUNDLE_FILE
Expand All @@ -79,14 +80,14 @@ mysql_roundcube_username:$ROUNDCUBE_MYSQL_USERNAME
mysql_roundcube_password:$ROUNDCUBE_MYSQL_PASSWORD
[roundcube_web]
roundcube_web_url:
roundcube_web_username:
roundcube_web_url:https://__EASYMAIL_HOSTNAME__
roundcube_web_username:admin@__EASYMAIL_HOSTNAME__
roundcube_web_password:$ADMIN_PASSWORD_UNENCRYPTED
[api]
api_url:
api_username:$MANAGEMENT_API_USERNAME
api_password:$MANAGEMENT_API_PASSWORD
api_url:https://__EASYMAIL_HOSTNAME__/api/
api_username:__EASYMAIL_MANAGEMENT_API_USERNAME__
api_password:__EASYMAIL_MANAGEMENT_API_PASSWORD__
" >> $EASY_MAIL_DIR/config.ini

cp $CURRENT_DIR/post_install.sh $EASY_MAIL_DIR/post_install.sh
5 changes: 1 addition & 4 deletions mysql/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,7 @@ expect \"Enter password for user root:\"
send \"$ROOT_MYSQL_PASSWORD\r\"
expect \"Press y|Y for Yes, any other key for No:\"
send \"y\r\"
expect \"Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:\"
send \"0\r\"
send \"n\r\"
expect \"Change the password for root ? ((Press y|Y for Yes, any other key for No) :\"
send \"n\r\"
Expand Down
54 changes: 37 additions & 17 deletions post_install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,23 @@ function set_hostname {
}

function get_rand_password() {
< /dev/urandom tr -dc A-Z-_{}a-z-0-9 | head -c${1:-60};
< /dev/urandom tr -dc A-Za-z-0-9 | head -c${1:-10};
}

function apply_easymail_configs {
export FILEPATH=$1;

sed -i "s/__EASYMAIL_MYSQL_PASSWORD__/$MYSQL_PASSWORD/g" $FILEPATH
sed -i "s/__EASYMAIL_ROOT_MYSQL_PASSWORD__/$ROOT_MYSQL_PASSWORD/g" $FILEPATH
sed -i "s/__EASYMAIL_ROUNDCUBE_MYSQL_PASSWORD__/$ROUNDCUBE_MYSQL_PASSWORD/g" $FILEPATH

sed -i "s/__EASYMAIL_ADMIN_PASSWORD_UNENCRYPTED__/$ADMIN_PASSWORD_UNENCRYPTED/g" $FILEPATH

sed -i "s/__EASYMAIL_HOSTNAME__/$HOSTNAME/g" $FILEPATH

sed -i "s/__EASYMAIL_MANAGEMENT_API_USERNAME__/$MANAGEMENT_API_USERNAME/g" $FILEPATH
sed -i "s/__EASYMAIL_MANAGEMENT_API_PASSWORD__/$MANAGEMENT_API_PASSWORD/g" $FILEPATH
sed -i "s/__EASYMAIL_MANAGEMENT_API_SECRETKEY__/$MANAGEMENT_API_SECRETKEY/g" $FILEPATH
}

export -f set_hostname
Expand All @@ -51,6 +67,8 @@ export ADMIN_PASSWORD=$(openssl passwd -1 $ADMIN_PASSWORD_UNENCRYPTED)
export ROOT_MYSQL_PASSWORD=$(get_rand_password)
export MYSQL_PASSWORD=$(get_rand_password)
export ROUNDCUBE_MYSQL_PASSWORD=$(get_rand_password)

export MANAGEMENT_API_USERNAME="easyadmin"
export MANAGEMENT_API_PASSWORD=$(get_rand_password)
export MANAGEMENT_API_SECRETKEY=$(get_rand_password)

Expand Down Expand Up @@ -81,22 +99,31 @@ UPDATE \`virtual_users\`
SET \`email\`='$ADMIN_EMAIL', \`password\`='$ADMIN_PASSWORD'
WHERE \`id\`='1';
ALTER USER 'root'@'localhost' IDENTIFIED BY '$MYSQL_PASSWORD';
# this should be fixed
#ALTER USER 'roundcube_user'@'localhost' IDENTIFIED BY '$ROUNDCUBE_MYSQL_PASSWORD';
ALTER USER 'mailuser'@'127.0.0.1' IDENTIFIED BY '$MYSQL_PASSWORD';
ALTER USER 'root'@'localhost' IDENTIFIED BY '$ROOT_MYSQL_PASSWORD';
EOF

# Set HOSTNAME for Dovecot
mv /var/mail/vhosts/__EASYMAIL_HOSTNAME__ /var/mail/vhosts/$HOSTNAME
sed -i "s/admin@__EASYMAIL_HOSTNAME__/admin@$HOSTNAME/g" /etc/dovecot/conf.d/20-lmtp.conf

apply_easymail_configs /etc/dovecot/dovecot.conf
apply_easymail_configs /etc/dovecot/dovecot-sql.conf.ext
apply_easymail_configs /etc/dovecot/conf.d/20-lmtp.conf

apply_easymail_configs /etc/postfix/mysql-virtual-mailbox-maps.cf
apply_easymail_configs /etc/postfix/mysql-recipient-bcc-maps.cf
apply_easymail_configs /etc/postfix/mysql-virtual-alias-maps.cf
apply_easymail_configs /etc/postfix/mysql-virtual-mailbox-domains.cf

# Reload services
service nginx restart
service dovecot reload
service postfix reload

# Set HOSTNAME Management API
sed -i "s/__EASYMAIL_HOSTNAME__/$HOSTNAME/g" /opt/easymail/ManagementAPI/config.ini
sed -i "s/__MANAGEMENT_API_SECRETKEY__/$MANAGEMENT_API_SECRETKEY/g" /opt/easymail/ManagementAPI/config.ini
sed -i "s/__MANAGEMENT_API_PASSWORD__/$MANAGEMENT_API_PASSWORD/g" /opt/easymail/ManagementAPI/config.ini
apply_easymail_configs /opt/easymail/ManagementAPI/config.ini

echo "Create a log dir"
mkdir /opt/easymail/logs/
Expand All @@ -108,13 +135,6 @@ echo "Run ManagementAPI"
./ManagementAPI > /opt/easymail/logs/ManagementAPI.log 2>&1 &

echo "Add new configurations to easymail config file"
sed -i "s/mysql_root_password:.*/mysql_root_password:$ROOT_MYSQL_PASSWORD/" $EASYMAIL_CONFIG
sed -i "s/mysql_easymail_password:.*/mysql_easymail_password:$MYSQL_PASSWORD/" $EASYMAIL_CONFIG
sed -i "s/mysql_roundcube_password:.*/mysql_roundcube_password:$ROUNDCUBE_MYSQL_PASSWORD/" $EASYMAIL_CONFIG
sed -i "s/roundcube_web_password:.*/roundcube_web_password:$ADMIN_PASSWORD_UNENCRYPTED/" $EASYMAIL_CONFIG
sed -i "s/api_password:.*/api_password:$MANAGEMENT_API_PASSWORD/" $EASYMAIL_CONFIG

sed -i "s/general_hostname:.*/general_hostname:$HOSTNAME/" $EASYMAIL_CONFIG
sed -i "s/roundcube_web_url:.*/roundcube_web_url:https:\/\/$HOSTNAME\//" $EASYMAIL_CONFIG
sed -i "s/roundcube_web_username:.*/roundcube_web_username:$ADMIN_EMAIL/" $EASYMAIL_CONFIG
sed -i "s/api_url:.*/api_url:https:\/\/$HOSTNAME\/api/" $EASYMAIL_CONFIG
apply_easymail_configs $EASYMAIL_CONFIG


8 changes: 7 additions & 1 deletion tests/config.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,13 @@
// Define variables
$hostname = "test.example.com";
$email = "admin@".$hostname;
$password = "__ROUNDCUBE_WEB_PASSWORD__";

$config = file_get_contents('/opt/easymail/config.ini');

$matches = [];
preg_match('/roundcube_web_password:(.*)/', $config, $matches);
$password = $matches[1];


// Define functions
function die2($input) {
Expand Down

0 comments on commit 0fc61e2

Please sign in to comment.