Yes this is allowed. In fact it is "normal" for huge block trades. (I created algorithmic trading systems for many companies in the US - I will give you an example).
Let's take a look at the info you provided - a spread of 10-12. First that doesn't really exist. Sure you may see something like that after hours or during super low volume times but stocks do not trade with a ~20% spread.
Second given the spread and the need to BUY a large block this buyer would jump at $10. The $9 price would never happen. Nobody is executing at $10 so it is basically someone gifting another person well over a million dollars. If a large block was advertised for a company (not sure how many shares this company has but you said daily volume below 1m) there would surely be some market makers looking to unload at profit - given the spread, low volume, this could be ANYWHERE between $10-12 and probably highly influenced by trade history. But what you would see is the market makers maybe starting at $12 or a little before. They would certainly start breaking that block of 1m up and push it up in increments until they start getting takers.
That is why you see large blocks sold off market sometimes - it is a game of cat and mouse. If the cat says I will pay $11 for 50k shares and only one market maker comes forward... Well the next 50k shares may be $11.25 and so on until there is more competition. A smart firm may look at their holdings or look at the holdings of the company and see... well if they want to buy 1m shares total they will probably need a lot of ours... let's put ares up for $13 a share until we start seeing them fill more.
So this is why companies go off exchange for large blocks - it is the only way to negotiate a price. On exchange for something low volume there will probably never be a market maker with 1m shares - why would they offer that unless it was a huge price? Going off exchange enables negotiation without showing the world your hand - most off exchange negotiations are confidential and there are even tools used in the financial markets to make these deals. The firms making these deals value anonymity and breaking it would severely damage their reputation.
The trades are made public - once they are negotiated, contracts signed and money/shares exchanged. (Sometimes large blocks could be put in a buffer/offer pool between the companies based on other consideration. If this is the case it would not be public because the transaction hasn't been fulfilled although there are SEC guidelines). An example is if I need 10m shares to start a takeover of said company and I negotiate to but 1m shares at XYZ date at a given price. I may not want to execute now() because I would be showing my hand for the other 9m shares.