--- /dev/null
+SELECT min(userid)
+FROM quasseluser
 
     setupCoreForInternalUsage();
   }
 
-  UserId uid = 3; // FIXME!!!11
+  mutex.lock();
+  UserId uid = storage->internalUser();
+  mutex.unlock();
+
   // Find or create session for validated user
   SessionThread *sess;
   if(sessions.contains(uid))
 
     <file>./SQL/SQLite/11/select_buffers.sql</file>
     <file>./SQL/SQLite/11/select_buffers_for_network.sql</file>
     <file>./SQL/SQLite/11/select_connected_networks.sql</file>
+    <file>./SQL/SQLite/11/select_internaluser.sql</file>
     <file>./SQL/SQLite/11/select_messageRange.sql</file>
     <file>./SQL/SQLite/11/select_messages.sql</file>
     <file>./SQL/SQLite/11/select_messagesOffset.sql</file>
 
   }
 }
 
+UserId SqliteStorage::internalUser() {
+  QSqlQuery query(logDb());
+  query.prepare(queryString("select_internaluser"));
+  query.exec();
+
+  if(query.first()) {
+    return query.value(0).toInt();
+  } else {
+    return 0;
+  }
+}
+
 void SqliteStorage::delUser(UserId user) {
   QSqlQuery query(logDb());
   query.prepare(queryString("delete_backlog_by_uid"));
 
   virtual void updateUser(UserId user, const QString &password);
   virtual void renameUser(UserId user, const QString &newName);
   virtual UserId validateUser(const QString &user, const QString &password);
+  virtual UserId internalUser();
   virtual void delUser(UserId user);
   virtual void setUserSetting(UserId userId, const QString &settingName, const QVariant &data);
   virtual QVariant getUserSetting(UserId userId, const QString &settingName, const QVariant &defaultData = QVariant());
 
      */
     virtual UserId validateUser(const QString &user, const QString &password) = 0;
 
+    //! Determine the UserId of the internal user
+    /** \return A valid UserId if the password matches the username; 0 else
+     */
+    virtual UserId internalUser() = 0;
+
     //! Remove a core user from storage.
     /** \param user     The userid to delete
      */