I want to write my own small mailserver application in python with aiosmtpd 
a) for educational purpose to better understand mailservers
b) to realize my own features  
So my question is, what is missing (besides aiosmtpd) for an Mail-Transfer-Agent, that can send and receive emails to/from other full MTAs (gmail.com, yahoo.com ...)?
I'm guessing: 
1.) Of course a domain and static ip
2.) Valid certificate for this domain
...should be doable with Lets Encrypt
3.) Encryption
...should be doable with SSL/Context/Starttls... with aiosmtpd itself
4.) Resolving MX DNS entries for outgoing emails!?
...should be doable with python library dnspython
5.) Error handling for SMTP communication errors, error replies from other MTAs, bouncing!?
6.) Queue for handling inbound and pending outbund emails!?  
Are there any other "essential" features missing?
Of course i know, there are a lot more "advanced" features for a mailserver like spam checking, malware checking, certificate validation, blacklisting, rules, mailboxes and more...
Thanks for all hints!

EDIT:  
Let me clarify what is in my mind:
I want to write a mailserver for a club. Its main purpose will be a mailing-list-server. There will be different lists for different groups of the club.
Lets say my domain is myclub.org then there will be for example youth@myclub.org, trainer@myclub.org and so on.
Only members will be allowed to use this mailserver and only the members will receive emails from this mailserver. No one else will be allowed to send emails to this mailserver nor will receive emails from it. The members email-addresses and their group(s) are stored in a database.  
In the future i want to integrate some other useful features, for example:  

Auto-reminders  
A chatbot, where members can control services and request informations by email  

What i don't need:  

User Mailboxes   
POP/IMAP access   
Webinterface   

Open relay issue:  

I want to reject any [FROM] email address that is not in the members database during SMTP negotiation.  
I want to check the sending mailservers for a valid certificate.  
The number of emails/member/day will be limited.  
I'm not sure, if i really need spam detection for the incoming emails?  

Losing emails issue:  
I think i will need a "lightweight" retry mechanism. However if an outgoing email can't be delivered after some retries, it will be dropped and only the administrator will be notified, not the sender. The members should not be bothered by email delivery issues. Is there any Python Library that can generate RFC3464 compliant error reply emails?
Reboot issue:  
I'm not sure if i really need persistent storage for emails, that are not yet sent? In my use case, all the outgoing emails should be delivered usually within a few seconds (if no delivery problem occurs). Before a (planned) reboot i can check for an empty send queue.
You may consider the following features:

Message threading 
Support for Delivery status
Support for POP and IMAP protocols 
Supports for protocols such as RFC 2821 SMTP and RFC 2033 LMTP email message transport 
Support Multiple message tagging 
Support for PGP/MIME (RFC2015)
Support list-reply
Lets each user manage their own mail lists Supports
Control of message headers during composition 
Support for address groups 
Prevention of mailing list loops 
Junk mail control
Python aiosmtpd - what is missing for an Mail-Transfer-Agent (MTA)?