diff --git a/src/freedombone-app-blog b/src/freedombone-app-blog
index be2606af01109045843425b0153b4502bf0e3c0a..cfb3f9351099bba6f66bea2ea4c6afb9a6718343 100755
--- a/src/freedombone-app-blog
+++ b/src/freedombone-app-blog
@@ -244,7 +244,7 @@ function restore_local_blog {
         fi
         for d in /home/*/ ; do
             USERNAME=$(echo "$d" | awk -F '/' '{print $3}')
-            if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+            if [[ $(is_valid_user $USERNAME) == "1" ]]; then
                 if [ -d /var/www/${FULLBLOG_DOMAIN_NAME}/htdocs/content/$USERNAME/blog/uncategorized/post ]; then
                     mv /var/www/${FULLBLOG_DOMAIN_NAME}/htdocs/content/$USERNAME/blog/*.md /var/www/${FULLBLOG_DOMAIN_NAME}/htdocs/content/$USERNAME/blog/uncategorized/post
                 fi
@@ -296,7 +296,7 @@ function restore_remote_blog {
         fi
         for d in /home/*/ ; do
             USERNAME=$(echo "$d" | awk -F '/' '{print $3}')
-            if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+            if [[ $(is_valid_user $USERNAME) == "1" ]]; then
                 if [ -d /var/www/${FULLBLOG_DOMAIN_NAME}/htdocs/content/$USERNAME/blog/uncategorized/post ]; then
                     mv /var/www/${FULLBLOG_DOMAIN_NAME}/htdocs/content/$USERNAME/blog/*.md /var/www/${FULLBLOG_DOMAIN_NAME}/htdocs/content/$USERNAME/blog/uncategorized/post
                 fi
diff --git a/src/freedombone-app-emacs b/src/freedombone-app-emacs
index f71c2780c9bb2d340eb763ae39f223355f36bc48..36cef8ec211df9bc3b209ff5e6b19b53bc3ab5ac 100755
--- a/src/freedombone-app-emacs
+++ b/src/freedombone-app-emacs
@@ -49,7 +49,7 @@ function upgrade_emacs {
 function backup_local_emacs {
     for d in /home/*/ ; do
         USERNAME=$(echo "$d" | awk -F '/' '{print $3}')
-        if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+        if [[ $(is_valid_user $USERNAME) == "1" ]]; then
             if [ -d /home/$USERNAME/.emacs.d ]; then
                 echo $"Backing up Emacs config for $USERNAME"
                 if [ -f /home/$USERNAME/.emacs ]; then
@@ -67,7 +67,7 @@ function restore_local_emacs {
     if [ -d $USB_MOUNT/backup/emacs ]; then
         for d in $USB_MOUNT/backup/emacs/*/ ; do
             USERNAME=$(echo "$d" | awk -F '/' '{print $6}')
-            if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+            if [[ $(is_valid_user $USERNAME) == "1" ]]; then
                 if [ ! -d /home/$USERNAME ]; then
                     ${PROJECT_NAME}-adduser $USERNAME
                 fi
diff --git a/src/freedombone-app-irc b/src/freedombone-app-irc
index c746d9ea69d7c06f8d5ec0f63df3a140386c7791..378494cf312cd494a2cdc12a97b9f3fc6b82eee6 100755
--- a/src/freedombone-app-irc
+++ b/src/freedombone-app-irc
@@ -61,7 +61,7 @@ function irc_set_global_password {
             # replace the password for all users
             for d in /home/*/ ; do
                 IRC_USERNAME=$(echo "$d" | awk -F '/' '{print $3}')
-                if [[ $IRC_USERNAME != "git" && $IRC_USERNAME != "mirrors" && $IRC_USERNAME != "sync" && $IRC_USERNAME != "tahoelafs" ]]; then
+                if [[ $(is_valid_user $IRC_USERNAME) == "1" ]]; then
                     if [ -f /home/$IRC_USERNAME/.irssi/config ]; then
                         sed -i "s|$EXISTING_IRC_PASSWORD|$NEW_IRC_PASSWORD|g" /home/$IRC_USERNAME/.irssi/config
                         chown -R $IRC_USERNAME:$IRC_USERNAME /home/$IRC_USERNAME/.irssi
diff --git a/src/freedombone-app-syncthing b/src/freedombone-app-syncthing
index 19d7c446d37db7a2bb2ef06072a055a6c181bd31..f2e4193d9e1c627ee81bdddf081b835d9af42b12 100755
--- a/src/freedombone-app-syncthing
+++ b/src/freedombone-app-syncthing
@@ -278,7 +278,7 @@ function restore_local_syncthing {
     if [ -d $USB_MOUNT/backup/syncthing ]; then
         for d in $USB_MOUNT/backup/syncthing/*/ ; do
             USERNAME=$(echo "$d" | awk -F '/' '{print $6}')
-            if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+            if [[ $(is_valid_user $USERNAME) == "1" ]]; then
                 if [ ! -d /home/$USERNAME ]; then
                     ${PROJECT_NAME}-adduser $USERNAME
                 fi
@@ -366,7 +366,7 @@ function restore_remote_syncthing {
     if [ -d $SERVER_DIRECTORY/backup/syncthing ]; then
         for d in $SERVER_DIRECTORY/backup/syncthing/*/ ; do
             USERNAME=$(echo "$d" | awk -F '/' '{print $6}')
-            if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+            if [[ $(is_valid_user $USERNAME) == "1" ]]; then
                 if [ ! -d /home/$USERNAME ]; then
                     ${PROJECT_NAME}-adduser $USERNAME
                 fi
diff --git a/src/freedombone-app-tahoelafs b/src/freedombone-app-tahoelafs
index b39d9b833fc1b9a1e2afdbe90e2e9ad4de3a9407..53e1e0edd015d591f7c9ebf8ca714d2f1d8d5491 100755
--- a/src/freedombone-app-tahoelafs
+++ b/src/freedombone-app-tahoelafs
@@ -50,7 +50,7 @@ function change_password_tahoelafs {
 function reconfigure_tahoelafs {
     for d in /home/*/ ; do
         USERNAME=$(echo "$d" | awk -F '/' '{print $3}')
-        if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+        if [[ $(is_valid_user $USERNAME) == "1" ]]; then
             if [ -d /home/$USERNAME/.tahoe ]; then
                 su -c "$TAHOE_COMMAND stop" - $USERNAME
                 rm -rf /home/$USERNAME/.tahoe
diff --git a/src/freedombone-app-xmpp b/src/freedombone-app-xmpp
index 6e525132fbdc86cbdfcb31dcd3615c21421b759e..8e3d3c58d76de5879fdfcde611db1fc7a25205cc 100755
--- a/src/freedombone-app-xmpp
+++ b/src/freedombone-app-xmpp
@@ -246,7 +246,7 @@ function remove_xmpp {
 function xmpp_email_headers {
     for d in /home/*/ ; do
         USERNAME=$(echo "$d" | awk -F '/' '{print $3}')
-        if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+        if [[ $(is_valid_user $USERNAME) == "1" ]]; then
             if [ -f /home/$USERNAME/.muttrc ]; then
                 if ! grep -q "Jabber-ID" /home/$USERNAME/.muttrc; then
                     echo "my_hdr Jabber-ID: ${USERNAME}@${HOSTNAME}" >> /home/$USERNAME/.muttrc
diff --git a/src/freedombone-archive-mail b/src/freedombone-archive-mail
index 5c8b5c78b87e26c9ce8c37395ad6516ca7c8c67a..de21c549a0ff17001f119be5a36291ec1cfade35 100755
--- a/src/freedombone-archive-mail
+++ b/src/freedombone-archive-mail
@@ -33,9 +33,11 @@ PROJECT_NAME='freedombone'
 export TEXTDOMAIN=${PROJECT_NAME}-archive-mail
 export TEXTDOMAINDIR="/usr/share/locale"
 
+source /usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-validation
+
 for d in /home/*/ ; do
     USERNAME=$(echo "$d" | awk -F '/' '{print $3}')
-    if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+    if [[ $(is_valid_user $USERNAME) == "1" ]]; then
         # for every user who has a mail directory
         if [ -d /home/$USERNAME/Maildir ]; then
             MUTTRC=/home/$USERNAME/.muttrc
diff --git a/src/freedombone-backup-local b/src/freedombone-backup-local
index a14cfe3f4097799f94cebb48c9bb607e5f1af657..07d911bc0c027227ca267238c8e88cca8bba93ec 100755
--- a/src/freedombone-backup-local
+++ b/src/freedombone-backup-local
@@ -98,7 +98,7 @@ function backup_users {
     # Backup user files
     for d in /home/*/ ; do
         USERNAME=$(echo "$d" | awk -F '/' '{print $3}')
-        if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+        if [[ $(is_valid_user $USERNAME) == "1" ]]; then
 
             # Backup any gpg keys
             if [ -d /home/$USERNAME/.gnupg ]; then
diff --git a/src/freedombone-backup-remote b/src/freedombone-backup-remote
index 03dc5f7a5ba33abbc1d42c4960bc242eb7baf0d5..d2aae88969dc2e9a00a911b4f18dd35a9609e1f0 100755
--- a/src/freedombone-backup-remote
+++ b/src/freedombone-backup-remote
@@ -122,7 +122,7 @@ function backup_configuration {
 function backup_users {
     for d in /home/*/ ; do
         USERNAME=$(echo "$d" | awk -F '/' '{print $3}')
-        if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+        if [[ $(is_valid_user $USERNAME) == "1" ]]; then
 
             # personal settings
             if [ -d /home/$USERNAME/personal ]; then
@@ -451,7 +451,7 @@ do
         # Social key management
         for d in /home/*/ ; do
             USERNAME=$(echo "$d" | awk -F '/' '{print $3}')
-            if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+            if [[ $(is_valid_user $USERNAME) == "1" ]]; then
                 disperse_key_shares $USERNAME $REMOTE_DOMAIN $REMOTE_SSH_PORT "$REMOTE_PASSWORD" $REMOTE_SERVER
             fi
         done
diff --git a/src/freedombone-base-email b/src/freedombone-base-email
index f06a7b87df5f70c56d7e03037bb9227b76ba1fbe..1fe7ea5044676423bcf208647841e6e5012e7a0a 100755
--- a/src/freedombone-base-email
+++ b/src/freedombone-base-email
@@ -1050,7 +1050,7 @@ function spam_filtering {
     echo '#!/bin/bash' > /usr/bin/filterspam
     echo 'for d in /home/*/ ; do' >> /usr/bin/filterspam
     echo '    USERNAME=$(echo "$d" | awk -F '"'"'/'"'"' '"'"'{print $3}'"'"')' >> /usr/bin/filterspam
-    echo '    if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then' >> /usr/bin/filterspam
+    echo '    if [[ $USERNAME != "git" && $USERNAME != "go" && $USERNAME != "gogs" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then' >> /usr/bin/filterspam
     echo '        MAILDIR=/home/$USERNAME/Maildir/.learn-spam' >> /usr/bin/filterspam
     echo '        if [ ! -d "$MAILDIR" ]; then' >> /usr/bin/filterspam
     echo '           exit' >> /usr/bin/filterspam
@@ -1072,7 +1072,7 @@ function spam_filtering {
     echo '#!/bin/bash' > /usr/bin/filterham
     echo 'for d in /home/*/ ; do' >> /usr/bin/filterham
     echo '    USERNAME=$(echo "$d" | awk -F '"'"'/'"'"' '"'"'{print $3}'"'"')' >> /usr/bin/filterham
-    echo '    if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then' >> /usr/bin/filterham
+    echo '    if [[ $USERNAME != "git" && $USERNAME != "go" && $USERNAME != "gogs" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then' >> /usr/bin/filterham
     echo '        MAILDIR=/home/$USERNAME/Maildir/.learn-ham' >> /usr/bin/filterham
     echo '        if [ ! -d "$MAILDIR" ]; then' >> /usr/bin/filterham
     echo '            exit' >> /usr/bin/filterham
diff --git a/src/freedombone-controlpanel b/src/freedombone-controlpanel
index 2d373a546dc3c1720670ec1406bdacb42b08f9fc..6d82f414978b572378d72e5d1e492ef0b7866be5 100755
--- a/src/freedombone-controlpanel
+++ b/src/freedombone-controlpanel
@@ -459,7 +459,7 @@ function show_users {
     echo '--------------------------------------------------------------------------'
     for d in /home/*/ ; do
         USRNAME=$(echo "$d" | awk -F '/' '{print $3}')
-        if [[ $USRNAME != "git" && $USRNAME != "mirrors" && $USRNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+        if [[ $(is_valid_user $USRNAME) == "1" ]]; then
             echo -n -e "$(pad_string ${USRNAME})"
             # get the SIP extension
             SIPEXT=
diff --git a/src/freedombone-restore-local b/src/freedombone-restore-local
index b44175738017cf9d9312ff76325da4dea91fc7cb..c2ae9c2e0f98734fa87b5cc3f23ab9a44ccc11dd 100755
--- a/src/freedombone-restore-local
+++ b/src/freedombone-restore-local
@@ -238,7 +238,7 @@ function restore_mutt_settings {
     if [ -d $USB_MOUNT/backup/mutt ]; then
         for d in $USB_MOUNT/backup/mutt/*/ ; do
             USERNAME=$(echo "$d" | awk -F '/' '{print $6}')
-            if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+            if [[ $(is_valid_user $USERNAME) == "1" ]]; then
                 if [ ! -d /home/$USERNAME ]; then
                     ${PROJECT_NAME}-adduser $USERNAME
                 fi
@@ -272,7 +272,7 @@ function restore_gpg {
     if [ -d $USB_MOUNT/backup/gnupg ]; then
         for d in $USB_MOUNT/backup/gnupg/*/ ; do
             USERNAME=$(echo "$d" | awk -F '/' '{print $6}')
-            if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+            if [[ $(is_valid_user $USERNAME) == "1" ]]; then
                 if [ ! -d /home/$USERNAME ]; then
                     ${PROJECT_NAME}-adduser $USERNAME
                 fi
@@ -309,7 +309,7 @@ function restore_procmail {
     if [ -d $USB_MOUNT/backup/procmail ]; then
         for d in $USB_MOUNT/backup/procmail/*/ ; do
             USERNAME=$(echo "$d" | awk -F '/' '{print $6}')
-            if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+            if [[ $(is_valid_user $USERNAME) == "1" ]]; then
                 if [ ! -d /home/$USERNAME ]; then
                     ${PROJECT_NAME}-adduser $USERNAME
                 fi
@@ -338,7 +338,7 @@ function restore_spamassassin {
     if [ -d $USB_MOUNT/backup/spamassassin ]; then
         for d in $USB_MOUNT/backup/spamassassin/*/ ; do
             USERNAME=$(echo "$d" | awk -F '/' '{print $6}')
-            if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+            if [[ $(is_valid_user $USERNAME) == "1" ]]; then
                 if [ -d $USB_MOUNT/backup/spamassassin/$USERNAME ]; then
                     if [ ! -d /home/$USERNAME ]; then
                         ${PROJECT_NAME}-adduser $USERNAME
@@ -399,7 +399,7 @@ function restore_user_ssh_keys {
     if [ -d $USB_MOUNT/backup/ssh ]; then
         for d in $USB_MOUNT/backup/ssh/*/ ; do
             USERNAME=$(echo "$d" | awk -F '/' '{print $6}')
-            if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+            if [[ $(is_valid_user $USERNAME) == "1" ]]; then
                 if [ ! -d /home/$USERNAME ]; then
                     ${PROJECT_NAME}-adduser $USERNAME
                 fi
@@ -428,7 +428,7 @@ function restore_user_config {
     if [ -d $USB_MOUNT/backup/config ]; then
         for d in $USB_MOUNT/backup/config/*/ ; do
             USERNAME=$(echo "$d" | awk -F '/' '{print $6}')
-            if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+            if [[ $(is_valid_user $USERNAME) == "1" ]]; then
                 if [ ! -d /home/$USERNAME ]; then
                     ${PROJECT_NAME}-adduser $USERNAME
                 fi
@@ -469,7 +469,7 @@ function restore_user_monkeysphere {
     if [ -d $USB_MOUNT/backup/monkeysphere ]; then
         for d in $USB_MOUNT/backup/monkeysphere/*/ ; do
             USERNAME=$(echo "$d" | awk -F '/' '{print $6}')
-            if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+            if [[ $(is_valid_user $USERNAME) == "1" ]]; then
                 if [ ! -d /home/$USERNAME ]; then
                     ${PROJECT_NAME}-adduser $USERNAME
                 fi
@@ -508,7 +508,7 @@ function restore_user_fin {
     if [ -d $USB_MOUNT/backup/fin ]; then
         for d in $USB_MOUNT/backup/fin/*/ ; do
             USERNAME=$(echo "$d" | awk -F '/' '{print $6}')
-            if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+            if [[ $(is_valid_user $USERNAME) == "1" ]]; then
                 if [ ! -d /home/$USERNAME ]; then
                     ${PROJECT_NAME}-adduser $USERNAME
                 fi
@@ -537,7 +537,7 @@ function restore_user_local {
     if [ -d $USB_MOUNT/backup/local ]; then
         for d in $USB_MOUNT/backup/local/*/ ; do
             USERNAME=$(echo "$d" | awk -F '/' '{print $6}')
-            if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+            if [[ $(is_valid_user $USERNAME) == "1" ]]; then
                 if [ ! -d /home/$USERNAME ]; then
                     ${PROJECT_NAME}-adduser $USERNAME
                 fi
@@ -610,7 +610,7 @@ function restore_personal_settings {
     if [ -d $USB_MOUNT/backup/personal ]; then
         for d in $USB_MOUNT/backup/personal/*/ ; do
             USERNAME=$(echo "$d" | awk -F '/' '{print $6}')
-            if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+            if [[ $(is_valid_user $USERNAME) == "1" ]]; then
                 if [ -d $USB_MOUNT/backup/personal/$USERNAME ]; then
                     if [ ! -d /home/$USERNAME ]; then
                         ${PROJECT_NAME}-adduser $USERNAME
@@ -663,7 +663,7 @@ function restore_email {
     if [ -d $USB_MOUNT/backup/mail ]; then
         for d in $USB_MOUNT/backup/mail/*/ ; do
             USERNAME=$(echo "$d" | awk -F '/' '{print $6}')
-            if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+            if [[ $(is_valid_user $USERNAME) == "1" ]]; then
                 if [ ! -d /home/$USERNAME ]; then
                     ${PROJECT_NAME}-adduser $USERNAME
                 fi
diff --git a/src/freedombone-restore-remote b/src/freedombone-restore-remote
index b5c234b5f9ee08c29e070f78d5f8a724c38b352c..ce540e62254f2a092d6b570ee0e1972952f73cbb 100755
--- a/src/freedombone-restore-remote
+++ b/src/freedombone-restore-remote
@@ -36,6 +36,8 @@ BACKUP_EXTRA_DIRECTORIES=/root/backup-extra-dirs.csv
 export TEXTDOMAIN=${PROJECT_NAME}-restore-remote
 export TEXTDOMAINDIR="/usr/share/locale"
 
+source /usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-validation
+
 SERVER_NAME=$1
 
 # whether to restore everything or just a specific application
@@ -225,7 +227,7 @@ function restore_mutt_settings {
     fi
     for d in $SERVER_DIRECTORY/backup/mutt/*/ ; do
         USERNAME=$(echo "$d" | awk -F '/' '{print $6}')
-        if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+        if [[ $(is_valid_user $USERNAME) == "1" ]]; then
             if [ -d $SERVER_DIRECTORY/backup/mutt/$USERNAME ]; then
                 if [ ! -d /home/$USERNAME ]; then
                     ${PROJECT_NAME}-adduser $USERNAME
@@ -257,7 +259,7 @@ function restore_gpg {
     fi
     for d in $SERVER_DIRECTORY/backup/gnupg/*/ ; do
         USERNAME=$(echo "$d" | awk -F '/' '{print $6}')
-        if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+        if [[ $(is_valid_user $USERNAME) == "1" ]]; then
             if [ -d $SERVER_DIRECTORY/backup/gnupg/$USERNAME ]; then
                 if [ ! -d /home/$USERNAME ]; then
                     ${PROJECT_NAME}-adduser $USERNAME
@@ -290,7 +292,7 @@ function restore_procmail {
     fi
     for d in $SERVER_DIRECTORY/backup/procmail/*/ ; do
         USERNAME=$(echo "$d" | awk -F '/' '{print $6}')
-        if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+        if [[ $(is_valid_user $USERNAME) == "1" ]]; then
             if [ -d $SERVER_DIRECTORY/backup/procmail/$USERNAME ]; then
                 if [ ! -d /home/$USERNAME ]; then
                     ${PROJECT_NAME}-adduser $USERNAME
@@ -317,7 +319,7 @@ function restore_spamassassin {
     fi
     for d in $SERVER_DIRECTORY/backup/spamassassin/*/ ; do
         USERNAME=$(echo "$d" | awk -F '/' '{print $6}')
-        if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+        if [[ $(is_valid_user $USERNAME) == "1" ]]; then
             if [ -d $SERVER_DIRECTORY/backup/spamassassin/$USERNAME ]; then
                 if [ ! -d /home/$USERNAME ]; then
                     ${PROJECT_NAME}-adduser $USERNAME
@@ -363,7 +365,7 @@ function restore_ssh_keys {
     fi
     for d in $SERVER_DIRECTORY/backup/ssh/*/ ; do
         USERNAME=$(echo "$d" | awk -F '/' '{print $6}')
-        if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+        if [[ $(is_valid_user $USERNAME) == "1" ]]; then
             if [ -d $SERVER_DIRECTORY/backup/ssh/$USERNAME ]; then
                 if [ ! -d /home/$USERNAME ]; then
                     ${PROJECT_NAME}-adduser $USERNAME
@@ -390,7 +392,7 @@ function restore_user_config {
     fi
     for d in $SERVER_DIRECTORY/backup/config/*/ ; do
         USERNAME=$(echo "$d" | awk -F '/' '{print $6}')
-        if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+        if [[ $(is_valid_user $USERNAME) == "1" ]]; then
             if [ -d $SERVER_DIRECTORY/backup/config/$USERNAME ]; then
                 if [ ! -d /home/$USERNAME ]; then
                     ${PROJECT_NAME}-adduser $USERNAME
@@ -429,7 +431,7 @@ function restore_user_monkeysphere {
     fi
     for d in $SERVER_DIRECTORY/backup/monkeysphere/*/ ; do
         USERNAME=$(echo "$d" | awk -F '/' '{print $6}')
-        if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+        if [[ $(is_valid_user $USERNAME) == "1" ]]; then
             if [ -d $SERVER_DIRECTORY/backup/monkeysphere/$USERNAME ]; then
                 if [ ! -d /home/$USERNAME ]; then
                     ${PROJECT_NAME}-adduser $USERNAME
@@ -466,7 +468,7 @@ function restore_user_fin {
     fi
     for d in $SERVER_DIRECTORY/backup/fin/*/ ; do
         USERNAME=$(echo "$d" | awk -F '/' '{print $6}')
-        if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+        if [[ $(is_valid_user $USERNAME) == "1" ]]; then
             if [ -d $SERVER_DIRECTORY/backup/fin/$USERNAME ]; then
                 if [ ! -d /home/$USERNAME ]; then
                     ${PROJECT_NAME}-adduser $USERNAME
@@ -493,7 +495,7 @@ function restore_user_local {
     fi
     for d in $SERVER_DIRECTORY/backup/local/*/ ; do
         USERNAME=$(echo "$d" | awk -F '/' '{print $6}')
-        if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+        if [[ $(is_valid_user $USERNAME) == "1" ]]; then
             if [ -d $SERVER_DIRECTORY/backup/local/$USERNAME ]; then
                 if [ ! -d /home/$USERNAME ]; then
                     ${PROJECT_NAME}-adduser $USERNAME
@@ -561,7 +563,7 @@ function restore_personal_settings {
     fi
     for d in $SERVER_DIRECTORY/backup/personal/*/ ; do
         USERNAME=$(echo "$d" | awk -F '/' '{print $6}')
-        if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+        if [[ $(is_valid_user $USERNAME) == "1" ]]; then
             if [ -d $SERVER_DIRECTORY/backup/personal/$USERNAME ]; then
                 if [ ! -d /home/$USERNAME ]; then
                     ${PROJECT_NAME}-adduser $USERNAME
@@ -608,7 +610,7 @@ function restore_email {
     fi
     for d in $SERVER_DIRECTORY/backup/mail/*/ ; do
         USERNAME=$(echo "$d" | awk -F '/' '{print $6}')
-        if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+        if [[ $(is_valid_user $USERNAME) == "1" ]]; then
             if [ -d $SERVER_DIRECTORY/backup/mail/$USERNAME ]; then
                 if [ ! -d /home/$USERNAME ]; then
                     ${PROJECT_NAME}-adduser $USERNAME
diff --git a/src/freedombone-sec b/src/freedombone-sec
index a46bb89fc07c2a30b4fbbe7ae1c8d79da11932ee..5b126d5da6ffee5e4570d34aa94f730bf30e704d 100755
--- a/src/freedombone-sec
+++ b/src/freedombone-sec
@@ -36,6 +36,8 @@ export TEXTDOMAINDIR="/usr/share/locale"
 CONFIGURATION_FILE=/root/${PROJECT_NAME}.cfg
 COMPLETION_FILE=$HOME/${PROJECT_NAME}-completed.txt
 
+source /usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-validation
+
 SSL_PROTOCOLS=
 SSL_CIPHERS=
 SSH_CIPHERS=
@@ -336,7 +338,7 @@ function send_monkeysphere_server_keys_to_users {
     monkeysphere_server_keys=$(monkeysphere-host show-key | grep $"OpenPGP fingerprint" | awk -F ' ' '{print $3}')
     for d in /home/*/ ; do
         USERNAME=$(echo "$d" | awk -F '/' '{print $3}')
-        if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+        if [[ $(is_valid_user $USERNAME) == "1" ]]; then
             if [ ! -d /home/$USERNAME/.monkeysphere ]; then
                 mkdir /home/$USERNAME/.monkeysphere
             fi
@@ -954,7 +956,7 @@ function export_settings {
 function refresh_gpg_keys {
     for d in /home/*/ ; do
         USERNAME=$(echo "$d" | awk -F '/' '{print $3}')
-        if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+        if [[ $(is_valid_user $USERNAME) == "1" ]]; then
             su -c 'gpg --refresh-keys' - $USERNAME
         fi
     done
diff --git a/src/freedombone-syncthing b/src/freedombone-syncthing
index bc91e3b482ca9fc3684cc0f90253d57beebc221b..777f1404497a49779b0154f0656fa945aab1dbe5 100755
--- a/src/freedombone-syncthing
+++ b/src/freedombone-syncthing
@@ -36,6 +36,8 @@ PROJECT_NAME='freedombone'
 export TEXTDOMAIN=$PROJECT_NAME-syncthing
 export TEXTDOMAINDIR="/usr/share/locale"
 
+source /usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-validation
+
 # File which keeps track of what has already been installed
 COMPLETION_FILE=$HOME/${PROJECT_NAME}-completed.txt
 
@@ -97,7 +99,7 @@ function create_syncthing_config {
 
     for d in /home/*/ ; do
         USERNAME=$(echo "$d" | awk -F '/' '{print $3}')
-        if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+        if [[ $(is_valid_user $USERNAME) == "1" ]]; then
             echo "    <folder id=\"$USERNAME\" path=\"/home/$USERNAME/Sync/\" ro=\"false\" rescanIntervalS=\"60\" ignorePerms=\"false\" autoNormalize=\"true\">" >> $SYNCTHING_CONFIG_FILE
             # include any specified device IDs for this user
             if [ -f /home/$USERNAME/$SYNCTHING_USER_IDS_FILE ]; then
@@ -137,7 +139,7 @@ function create_syncthing_config {
     echo "" > $TEMP_IDS_FILE
     for d in /home/*/ ; do
         USERNAME=$(echo "$d" | awk -F '/' '{print $3}')
-        if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+        if [[ $(is_valid_user $USERNAME) == "1" ]]; then
             if [ -f /home/$USERNAME/$SYNCTHING_USER_IDS_FILE ]; then
                 while read -r line || [[ -n "$line" ]]; do
                     line2="$(echo -e "${line}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')"
@@ -177,7 +179,7 @@ function create_syncthing_config {
     echo "" > $TEMP_IDS_FILE
     for d in /home/*/ ; do
         USERNAME=$(echo "$d" | awk -F '/' '{print $3}')
-        if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+        if [[ $(is_valid_user $USERNAME) == "1" ]]; then
             if [ -f /home/$USERNAME/$SYNCTHING_USER_IDS_FILE ]; then
                 while read -r line || [[ -n "$line" ]]; do
                     line2="$(echo -e "${line}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')"
@@ -236,7 +238,7 @@ function create_syncthing_config {
     # This allows it to appear within the user control panel
     for d in /home/*/ ; do
         USERNAME=$(echo "$d" | awk -F '/' '{print $3}')
-        if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+        if [[ $(is_valid_user $USERNAME) == "1" ]]; then
             echo "$SYNCTHING_ID" > /home/$USERNAME/.syncthing-server-id
             chown $USERNAME:$USERNAME /home/$USERNAME/.syncthing-server-id
         fi
@@ -257,7 +259,7 @@ function user_devices_changed {
 
     for d in /home/*/ ; do
         USERNAME=$(echo "$d" | awk -F '/' '{print $3}')
-        if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+        if [[ $(is_valid_user $USERNAME) == "1" ]]; then
             if [ -f /home/$USERNAME/$SYNCTHING_UPDATE_FILE ]; then
                 CHANGED=1
             fi
diff --git a/src/freedombone-utils-backup b/src/freedombone-utils-backup
index 9b1b4e678924967a1d5aa93c6e59349f628a0569..a076c32d1b1f653b3e476b5f7c7aa1b7f598860c 100755
--- a/src/freedombone-utils-backup
+++ b/src/freedombone-utils-backup
@@ -275,7 +275,7 @@ function set_user_permissions {
     echo $"Setting permissions"
     for d in /home/*/ ; do
         USERNAME=$(echo "$d" | awk -F '/' '{print $3}')
-        if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" && $USERNAME != "tahoelafs" ]]; then
+        if [[ $(is_valid_user $USERNAME) == "1" ]]; then
             chown -R $USERNAME:$USERNAME /home/$USERNAME
         fi
     done
diff --git a/src/freedombone-utils-validation b/src/freedombone-utils-validation
index a3f30c6e3d678b4bddf2355117466735e48160b3..578ab08c639489019dbf200553faf37df3422681 100755
--- a/src/freedombone-utils-validation
+++ b/src/freedombone-utils-validation
@@ -60,4 +60,13 @@ function validate_freedns_code {
     VALID_CODE='yes'
 }
 
+function is_valid_user {
+    USRNAME="$1"
+    if [[ "$USRNAME" != "go" && "$USRNAME" != "gogs" && "$USRNAME" != "git" && "$USRNAME" != "mirrors" && "$USRNAME" != "sync" && "$USERNAME" != "tahoelafs" ]]; then
+        echo "1"
+    else
+        echo "0"
+    fi
+}
+
 # NOTE: deliberately no exit 0