How to get number of active users with one SQL-Query?
I don't know how to translate your tables into any of n_active_users; n_users_created_classified; n_user_sent_msg; n_user_read_msg.  But here are some clues:

A simple query for the immediately preceding 30-ish days:

SELECT COUNT(DISTINCT user_id)
    FROM tbl
    WHERE timestamp &gt; NOW() - INTERVAL 1 MONTH;


(Or maybe you would want - INTERVAL 30 DAY.)

This might work for n_user_read_msg:

SELECT COUNT(DISTINCT recipient_user_id) AS n_user_read_msg
    FROM messages
    WHERE timestamp &gt; NOW() - INTERVAL 1 MONTH;
      AND status = 4;


If you want the last thing for each month, then do:

SELECT LEFT(timestamp, 7) AS yyyy_mm,
       COUNT(DISTINCT recipient_user_id) AS n_user_read_msg
    FROM messages
    WHERE status = 4
    GROUP BY LEFT(timestamp, 7);